gpt4 book ai didi

firebase - 如何动态地将 map 数组添加到cloud firestore中?

转载 作者:行者123 更新时间:2023-12-03 08:29:55 27 4
gpt4 key购买 nike

我添加了这样的数据,

await firestoreSave.collection('chat').doc().set({
'buyer_id': "76QlZL2IbADZBnvbofN3",
'book_id':"N5xlvDcWC5ffwdKWLA6DfF9FcfD2",
'seller_id': "ranjit",
"messages": [
{"message": "What is up", "timeStamp": "Dec 12", "type": userId}
]
}).catchError((onError) {
print(
"you have a error");
});

现在,如果我只需更新 messages 字段。只需添加另一个具有相同键但不同值的 map ,我该怎么做?
我尝试使用 update 但我只能弄清楚在上一个 map 中添加另一个字段,但我必须在数组中添加另一个 map 。
我怎样才能做到呢?

最佳答案

更新现有数据有两种方法:

使用update(data),仅当文档存在时才会更新给定字段。如果文档不存在,它将返回错误。

使用 set(data, SetOptions(merge: true)) 将更新给定字段并合并它们,如果文档不存在,它也会创建该文档。

现在,如果您想向数组添加值而不更新其他字段,则必须将 FieldValue.arrayUnion 与 set 或 update 结合使用:

firestoreSave.collection('chat').doc().set({
"messages": FieldValue.arrayUnion(
[{"message": "What is up", "timeStamp": "Dec 12", "type": userId}]
)
}, SetOptions(merge: true))

请注意,FieldValue.arrayUnion 仅添加唯一值,并且它不适用于嵌套数组,这意味着您将无法使用它来更新消息映射。

正如 @Renaud 在评论中提到的,您也可以一次添加多个值,例如:

firestoreSave.collection('chat').doc().set({
"messages": FieldValue.arrayUnion(
[{"message": "What is up", "timeStamp": "Dec 12", "type": userId},
{"message": "What's new", "timeStamp": "Dec 12", "type": userId},
],
),
}, SetOptions(merge: true))

关于firebase - 如何动态地将 map 数组添加到cloud firestore中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65437103/

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