我正在使用Firestore将消息数组存储在聊天应用程序中。对于每条发送的消息,我都使用“ arrayUnion”更新消息数组。更新时,有时会添加两个项目(到客户端数据库中,并很快被服务器覆盖)
来自the docs:“ arrayUnion()将元素添加到数组,但仅不存在的元素”。但是,我的情况是,我的客户端Firebase数据库实例将添加重复的数据,然后服务器将在成功写入和重复删除后对其进行纠正。
db.update({
messages: firebase.firestore.FieldValue.arrayUnion(serverMessage)
})
大约1秒钟,我在数组中有重复项。我不确定为什么要复制我的数据(我已经确认客户端上只有一个侦听器)---但我也不明白为什么客户端Firebase数据库实例允许重复写入。这是我看到的错误中的visual。