firebase - 使用 Flutter 向 Cloud Firestore 添加对象

我想在我的 Flutter 应用中向 Google Cloud Firestore 添加一个对象,如下所示:

我已经做了一个回复类:

class Reply {
Reply(this.replyName, this.replyText, this.replyVotes);
  final String replyName;
  final String replyText;
  final String replyVotes;

  String getName() {
    return replyName;
  }

  String getText() {
    return replyText;
  }

  String getVotes() {
    return replyVotes;
  }
}

如何将回复对象添加到云 Firestore?

编辑: 澄清一下,我想创建一个数据类型为 Object 的字段,其中包含字段:Reply Object Image

最佳答案

首先,我强烈建议您使用一个文件来定义您的所有模式和/或模型,这样您的数据库结构就有一个单一的引用点。像一些名为 dbSchema.dart 的文件:

import 'package:meta/meta.dart';

class Replies {

  final String title;  
  final Map coordinates;

  Replies({
    @required this.title,
    @required this.coordinates,
  });

 Map<String, dynamic> toJson() =>
  {
    'title': title,
    'coordinates': coordinates,
  };

}

并将您希望成为对象类型 Map 的字段。然后,在您要插入数据库的页面上,导入 dbSchema.dart 并创建一个新模型:

Replies _replyObj = new Replies(
  title: _topic,
  coordinates: _coordinates,
);

假设您在此之前已经定义了本地 _coordinates(或其他)对象,例如:

_coordinates = {
 'lat': '40.0000',
 'lng': '110.000', 
};

然后插入到 Firestore,添加对象的 toJson 方法(你不能插入/更新普通的 Dart 模型):

CollectionReference dbReplies = Firestore.instance.collection('replies');

Firestore.instance.runTransaction((Transaction tx) async {
  var _result = await dbReplies.add(_replyObj.toJson());
  ....

更新 (5/31)

要将读取的文档转换回对象,您需要将 fromJson 添加到类中,如下所示:

Replies.fromJson(Map parsedJson) {
    id = parsedJson['id']; // the doc ID, helpful to have
    title = parsedJson['title'] ?? '';
    coordinates = parsedJson['coordinates'] ?? {};
}

所以当你查询数据库时:

QuerySnapshot _repliesQuery = await someCollection
        .where('title', isEqualTo: _title)
        .getDocuments();

List<DocumentSnapshot> _replyDocs = _repliesQuery.documents;

您可以从每个快照中创建一个对象:

for (int _i = 0; _i < _replyDocs.length; _i++) {

  Replies _reply = Replies.fromJson(_replyDocs[_i].data);
  _reply.id = _replyDocs[_i].documentID;

  // do something with the new _reply object
}

https://stackoverflow.com/questions/51170298/

相关文章:

dart - 使用 NetworkImage 进行 Flutter 小部件测试

flutter - 如何创建返回小部件数组的函数

dart - Flutter 自定义动画对话框

datetime - 如何到达 Dart 的最后一个午夜?

mobile - Flutter - Sliver List 内的 Sliver Layout 水平

flutter - 如何使用flutter存储登录信息?

flutter - Flutter中如何改变ListView的overscroll发光效果颜色?

facebook - 如何在 Flutter 应用中实现分享按钮?

database - 任何用于 Flutter 的持久性 NoSQL 数据存储?

dart - Flutter - 我正在寻找一种制作脉冲动画的方法