我想根据附件中显示的 memberId 将 readStatus 值从1更改为2。我无法更改是直接使用单个查询。如何更改?
我尝试过
HashMap<String, Object> result = new HashMap<>();
result.put("readStatus", "2");
FirebaseDatabase.getInstance().getReference()
.child("Message")
.child(idRoom)
.child("ChatMessages")
.child(messageId)
.child("Status")
.child("memberID")
.updateChildren(result);
但是它添加了一个新的孩子作为memberId-由于上述查询,我得到的是不正确的。如何实现此查询?
答案 0 :(得分:0)
对此进行更改,您正在尝试将值更新为没有您的readStatus键的引用
FirebaseDatabase.getInstance().getReference()
.child("Message")
.child(idRoom)
.child("ChatMessages")
.child(messageId)
.child("status")
.child("0")
.updateChildren(result);
如果希望每个成员都有一个readStatus,则应将数据库更改为此
status
|_ "your_member_id"
|_ readStatus: 1
代替
status
|_ 0
|_ memberId: "your_member_id"
|_ readStatus: 2
另外,您的参考中还有一些错别字,例如.child("memberID")
在您的数据库中不存在,而.child("Status")
是大写字母,而小写字母"status"
如果您如上所述更改数据库结构,则应以这种方式更新值
HashMap<String, Object> result = new HashMap<>();
result.put("readStatus", "2");
FirebaseDatabase.getInstance().getReference()
.child("Message")
.child(idRoom)
.child("ChatMessages")
.child(messageId)
.child("status")
.child(memberId)
.updateChildren(result);
此外,也无需使用地图来更新子级,只需使用setValue();
,它将覆盖当前的resultStatus
FirebaseDatabase.getInstance().getReference()
.child("Message")
.child(idRoom)
.child("ChatMessages")
.child(messageId)
.child("status")
.child(memberId)
.child("readStatus")
.setValue("2");