如何增加 Firestore 数组中的地图值

Meh*_*han 4 javascript google-cloud-firestore

我有一个 firestore firebase 数据库,其中我有一个集合 users 集合中有一个数组,并且在数组中有一个 map 在 map 中有一个字段 qty .. 我想增加那个 qty 值..

图片

使用增量没有帮助,因为数量在数组索引内

    db.collection("users").doc(checkId).update({
                myCart: firebase.firestore.FieldValue.arrayUnion({
                    qty: firebase.firestore.FieldValue.increment(1),

                }),
Run Code Online (Sandbox Code Playgroud)

这是错误 Output => Uncaught (in promise) FirebaseError: Function FieldValue.arrayUnion() 调用了无效数据。FieldValue.increment() 只能与 update() 和 set() 一起使用

Fra*_*len 6

您需要指定要更新的字段的完整路径。所以我认为在你的情况下,那将是:

db.collection("users").doc(checkId).update({
  "myCart.0.qty": firebase.firestore.FieldValue.increment(1)
}),
Run Code Online (Sandbox Code Playgroud)

  • 先生,这是用 qty:1 覆盖“ myCart.0 ”中的所有值,我只想增加该数量 (2认同)

Dou*_*son 6

您要更新的字段嵌入在数组中。在这种情况下,您不能使用FieldValue.increment(),因为不可能将数组元素调用为命名字段值。

您需要做的是读取整个文档,修改内存中的字段以包含您想要的内容,然后将该字段更新回文档中。如果您需要更新为原子性,还可以考虑使用事务来实现此目的。

(如果该字段不是数组的一部分,则可以使用FieldValue.increment()。)