Firestore:如何在条件和嵌套数组上更新数组



数据库图片我似乎无法根据条件修改convos数组,更不用说更新嵌套的值了。我想做两件事:给定socketID,将'connected'更改为false。在给定socketID的消息数组中添加一个对象。我可以添加到convos数组中并从convos数组中读取,但是我不能更新或更改任何内容。

下面是我认为是我最好的尝试的代码

const person = {socketID: '123123'};
firebase.firestore().collection("Conversations").doc("x0uio6wWlxEyos6ruc2r")
.onSnapshot((doc)=> {
doc.where('socketID', '===', person.socketID)
.update({
connected: false
})
})

我想如果我正确地知道如何访问特定文档中的convos数组,那么我应该能够相应地进行更新更改。如有任何帮助,不胜感激。

试试这个,

update({
connected : false,
messages : firebase.firestore.FieldValue.arrayUnion(object)
})

和删除元素使用arrayRemove

不能对DocumentData应用过滤。您可能需要通过javascript操作文档。

const data = (await firebase.firestore().collection("Conversations").doc("x0uio6wWlxEyos6ruc2r").get()).data();
const manipulatedData = data.find(x => x.socketID == person.socketID).connected = false;     
firebase.firestore().collection("Conversations").doc("x0uio6wWlxEyos6ruc2r").set(manipulatedData, { merge: true });

你可能需要对代码做一些小的修改。

最新更新