簡體   English   中英

Flutter:更新列表中的特定索引 (Firestore)

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM