我有对象数组,我想在用户在数组中输入新数据时添加新对象吗?
Firestore.instance.collection(city).document('Attractions').updateData(
"data", FieldValue.arrayUnion(obj)
);
这显示了错误,我该如何用颤振来实现?
答案 0 :(得分:5)
正确格式为:
Firestore.instance.collection(city).document('Attractions').updateData({"data": FieldValue.arrayUnion(obj)});
updateData
以Map<String,dynamic>
作为数据。
在您的代码中,您使用,
作为键-值之间的分隔符,而应该是:
答案 1 :(得分:1)
这是我构建的工作功能,它将新的Map添加到Firestore Services类中的数组。我正在使用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);
}
}
'''
答案 2 :(得分:0)
@ anmol.majhail是正确的,但是要解决@Sami Ullah的问题,您必须首先创建一个列表并将对象添加到列表中,如下所示:
var list = List<ObjectType>();
list.add(obj);
Firestore.instance.collection('city').document('Attractions').updateData({"data": FieldValue.arrayUnion(obj)});
答案 3 :(得分:0)
说这是你要添加的数据
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'));