我有一个消息传递应用程序,模型看起来像这样
public class Message {
String message;
List<String> reads;
... more logics
}
在firebase上它看起来像这样
... [
"myGeneratedMessageId" : {
"from":"userId1",
"reads":[
"userId2",
"userId3"
]
}, ...
]
当用户看到它时,应将用户的id添加到数组中。如果多个用户同时看到它,我是否必须担心覆盖该数组中的值?我该怎么做才能做到这一点?
澄清,
用户1看到消息 - &gt;将用户ID发送到该数组(我想通过将其添加到本地数组,然后在Firebase上的消息上更新该子项)
用户2在用户1更新之前看到该消息,也更新它 - 只将他的ID添加到数组并更新Firebase上的子项
我将reads
放入带有id : boolean
...
"message": "Hello world!",
"from": "userId1",
"reads":[
"userId2": true,
"userId3": true
], ...
内部模型markAsRead()
if(reads == null) {
reads = new HashMap<String, Boolean>(); <-- could cause problem
}
if(reads.get(userId) == null) {
reads.put(userId, true);
}
.. save logics
如果没有,则用户仍然可以创建散列图,使其他用户的新散列图重写它。
答案 0 :(得分:2)
如果我理解正确,您会担心firebase数据库的并发更新。
如果是这样,你可以查看
部分并检查这个答案:
Firebase - Multiple users simultaneously updating same object using its old value