[英]flutter firestore, add new object in array
我有对象数组,我想在用户在数组中输入新数据时添加新对象吗?
Firestore.instance.collection(city).document('Attractions').updateData(
"data", FieldValue.arrayUnion(obj)
);
这显示错误,我怎样才能用 flutter 实现这个?
正确的格式是:
Firestore.instance.collection(city).document('Attractions').updateData({"data": FieldValue.arrayUnion(obj)});
updateData
以Map<String,dynamic>
作为数据。
在您的代码中,
作为键值之间的分隔符应该是:
@anmol.majhail 是对的,但要解决@Sami Ullah 的问题,您必须首先制作一个列表并将对象添加到列表中,如下所示:
var list = [objectBeingAdded];
Firestore.instance.collection('city').document('Attractions').updateData({"data": FieldValue.arrayUnion(list)});
假设这是您要添加的数据
Map<String, dynamic> someData = {
'foo': 1,
'bar': true,
};
添加具有唯一自动生成 ID 的数据:
var collection = FirebaseFirestore.instance.collection('collection'); collection.add(someData).then((_) => print('Added')).catchError((error) => print('Add failed: $error'));
添加带有您自己的 ID 的数据:
var collection = FirebaseFirestore.instance.collection('collection'); collection.doc('document_id') // <-- Document ID.set(someData).then((_) => print('Added')).catchError((error) => print('Add failed: $error'));
将对象添加到数组:
var collection = FirebaseFirestore.instance.collection('collection'); collection.doc('document_id') // <-- Document ID.set({'data': FieldValue.arrayUnion(list)}) // <-- Add data.then((_) => print('Added')).catchError((error) => print('Add failed: $error'));
这是我构建的一个工作函数,它将新地图添加到我的 Firestore 服务类中的数组。 我正在使用 Json Serializable 来注释我所有的模型类。 userTemplateSections 是我的 userTemplate firestore 文档中的一个数据字段。 我将 userTemplate 作为“addUserTemplateSection”函数的构造函数,以确保我正在编辑正确的文档。
我还添加了从 firestore 文档数组中删除地图的功能。
'''
Future<void> addUserTemplateSection(
{UserTemplate userTemplate, String title, String summary}) async {
try {
final UserTemplateSection userTemplateSection =
UserTemplateSection(title: title, summary: summary);
await _firestore
.document(FirestorePath.userTemplate(uid, userTemplate.id))
.updateData(
{
'userTemplateSections':
FieldValue.arrayUnion([userTemplateSection.toJson()])
},
);
} catch (e) {
print(e);
}
}
'''
'''
Future<void> deleteUserTemplateSection({
UserTemplate userTemplate,
UserTemplateSection userTemplateSection,
}) async {
try {
await _firestore
.document(FirestorePath.userTemplate(uid, userTemplate.id))
.updateData(
{
'userTemplateSections':
FieldValue.arrayRemove([userTemplateSection.toJson()])
},
);
} catch (e) {
print(e);
}
}
'''
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.