[英]Flutter: Update specific index in list (Firestore)
您如何根據索引更新列表中的特定值? 例如,在以下列表中:
0 [
{
first_name: name0,
last_name: lastName0,
}
]
1 [
{
first_name: name1,
last_name: lastName1,
}
]
我怎樣才能只更新“lastName1”? 目前,我使用的是 ArrayUnion 的一些 hacky 解決方案,它使用數據比較而不是實際索引(我將值加載到表單中,刪除原始值,然后再次重新添加):
// Retrieve data at index, load into form
// Remove that index from List
await Firestore.instance.collection(col).document(doc).updateData({
'people': FieldValue.arrayRemove([person])
});
// Make changes to data via form
// Save back to list
await Firestore.instance.collection(col).document(doc).updateData({
'people': FieldValue.arrayUnion([person])
});
是否有 function 允許我指定要更新哪個特定索引的數據? 類似的東西(但使用列表,而不是地圖):
await Firestore.instance.collection(col).document(doc).updateData({
'people.$index.lastName1': 'newName')
});
對於所有客戶端語言和平台,目前不可能發出單個命令來按索引更新數組項。 沒有特殊的語法。 您需要做的是讀取文檔,以您想要的方式修改字段數組數據,然后將該字段完整地更新回文檔。 如果您希望更新是原子的,您可以在事務中執行此操作。
也可以看看:
你可以在字段名后面提到索引值,它會正常工作,
await FirebaseFirestore.instance
.collection('collectionPath')
.doc(uid)
.update({
"Class Details"[0]: FieldValue.arrayUnion([
{
"Price": 3000,
"Paid": true,
}
])
});
我提到在我的字段名上,如"Class Details"[0]
,它會起作用,感謝閱讀,祝你有美好的一天,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.