[英]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.