gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:35:01 26 4
gpt4 key购买 nike

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

Firestore image

我已经做了一个回复类:

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
}

关于firebase - 使用 Flutter 向 Cloud Firestore 添加对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51170298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com