【问题标题】:How do update array values in Flutter cloud_firestore?如何更新 Flutter cloud_firestore 中的数组值?
【发布时间】:2019-03-14 15:49:45
【问题描述】:

我有一个包含数组字段的文档。

如何更新数组?

在 firebase 函数中,使用 typescript,我做了这样的事情:

admin.firestore()
    .collection('friendships')
    .doc(caller.data["uid"])
    .update({
        friends: admin.firestore.FieldValue
            .arrayUnion({
                          friendDisplayName: snapshot.data["friendDisplayName"],
                          friendUid: snapshot.ref
                       })
    })

我找不到 Flutter 的任何替代方案。我该怎么办?

【问题讨论】:

  • 这不起作用 - Firestore.instance.collection('friendships').document(caller.data["uid"]).updateData({ 'friends':{ 'friendDisplayName': 快照.data["friendDisplayName"], 'friendUid': snapshot.ref } ?

标签: dart flutter google-cloud-firestore


【解决方案1】:

类似的东西

firestore.instance.
    .collection('friendships')
    .document(caller.data["uid"])
    .updateData({
  friends: FieldValue.arrayUnion({
    friendDisplayName: snapshot.data["friendDisplayName"],
    friendUid: snapshot.ref
  })
});

【讨论】:

  • caller.data 检索什么?我是飞镖新手,我正在努力更新我的 Firebase 中的数组
【解决方案2】:

我给你的解决方案是当你使用事务时,但不管怎样,它的工作原理都是一样的......

List<dynamic> list = List.from(documentSnapshot.data['uids']);
list.add(uid);
await documentTransaction.update(
  postRef,
  <String, dynamic>{
    'counter': documentSnapshot.data['counter'] + 1,
    'uids': list,
  },
);

【讨论】:

  • 问题是有时您无法获取整个列表然后添加新元素。如果您可以在现有数组中添加一个新元素而无需先获取,那就太好了
猜你喜欢
  • 2020-07-27
  • 2020-01-16
  • 2022-07-07
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 2019-11-25
  • 1970-01-01
相关资源
最近更新 更多