Flutter:更新列表中的特定索引(Firestore) [英] Flutter: Update specific index in list (Firestore)

查看:132
本文介绍了Flutter:更新列表中的特定索引(Firestore)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何精确地基于列表的索引更新列表中的特定值?例如,在下面的列表中:

How exactly do you update a specific value in a list based on it's index? For example, in the following list:

0 [
    {
      first_name: name0,
      last_name: lastName0,
    }
  ]
1 [
    {
      first_name: name1,
      last_name: lastName1,
    }
  ]          

如何仅更新"lastName1"?此刻,我正在使用一些使用ArrayUnion的解决方案,该解决方案使用数据比较而不是实际的索引(我将这些值加载到表单中,删除了原始值,然后再次将其重新添加):

How can I update only "lastName1"? At the moment, I'm using a bit of a hacky solution using ArrayUnion, which uses data comparison instead of the actual index (I load the values into a form, delete the original value and then re-add it again):

 // 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])
});

是否有一个函数可以让我指定要更新哪个特定索引的数据?诸如此类(但使用列表而不是地图):

Is there a function that will allow me to specify which specific index's data to update? Something like (but using a List, not Map):

 await Firestore.instance.collection(col).document(doc).updateData({
  'people.$index.lastName1': 'newName')
 });

推荐答案

对于所有客户端语言和平台,当前不可能发出单个命令来按索引更新数组项.对此没有特殊的语法.相反,您需要做的是阅读文档,以所需的方式修改字段数组数据,然后将该字段全部更新回文档.如果您希望更新是原子更新,则可以在事务中完成此操作.

For all client languages and platforms, it's currently not possibly to issue a single command to update an array item by index. There is no special syntax for that. What you will need to do instead is read the document, modify the field array data in the way that you want, and update that field back to the document, in its entirety. You can do this in a transaction if you want the update to be atomic.

另请参阅:

  • Is there any way to update a specific index from the array in Firestore
  • Firestore Update single item in an array field
  • How to update an array item in Firestore
  • How to update an "array of objects" with Firestore?

这篇关于Flutter:更新列表中的特定索引(Firestore)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆