gpt4 book ai didi

Firebase:带有对象的 FieldValue.arrayUnion

转载 作者:行者123 更新时间:2023-12-05 01:15:27 25 4
gpt4 key购买 nike

例如我有这样一个文档:

team: {
members: [{name: "john", age: 2}, {name: "tim", age: 3}]
}

我想将 Tims 年龄更新为 4 {name: "tim", age: 3}{name: "tim", age: 4}

我可以使用 FieldValue.arrayUnion 来做到这一点吗?

因为现在。

...
.update({team: firbase.firestore.FieldValue.arrayUnion({name: "tim", age: 4})})

将创建新的条目和团队就像

[
{name: "john", age: 2},
{name: "tim", age: 3},
{name: "tim", age: 4} <-- duplicate
]

最佳答案

不,arrayUnion 在这里不起作用。 arrayUnion 根据其整个内容认为列表中的每个项目都是唯一的。两个对象不被视为相同,除非它们的所有属性严格相等。这就是为什么您会在列表中获得一个全新的项目 - 年龄不一样,而且 Firestore 无法知道您只希望“名称”是唯一的。

如果你想改变一个数组的内容,你必须读取文档,改变内存中数组的内容,然后将改变的内容写回文档。一个 transaction可能适合这个。

另一个想法:考虑以出生日期而不是当前年龄来存储年龄。出生日期永远不会改变,并且可以根据与出生日期相关的当前时间来计算年龄。

关于Firebase:带有对象的 FieldValue.arrayUnion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56071482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com