gpt4 book ai didi

java - 根据查询更改 firebase 数据

转载 作者:行者123 更新时间:2023-12-02 10:41:17 25 4
gpt4 key购买 nike

代码

Query mSeenRef = mDatabaseReference.child("Messages").child(MessageRecieverId).child(MessageSenderId).orderByChild("From").equalTo(MessageRecieverId);

这是查询,如果此查询为真,我想更改另一个子项...类似于添加值事件监听器并获取上面的查询数据...只是我想更改数据而不是获取数据,但我无法在 value 事件监听器中使用 setValue 方法,那么我该怎么办?

我在 MessageRecieverId 中也有 UIDS,里面是 From

enter image description here

最佳答案

尝试以下操作:

DatabaseReference db = FirebaseDatabase.getInstance().getReference();

Query mSeenRef = db.child("Messages").child(MessageRecieverId).child(MessageSenderId).orderByChild("From").equalTo(MessageRecieverId);
mSeenRef.addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
if(dataSnapshot.exist()) {
for(DataSnapshot ds: dataSnapshot.getChildren()){
String keyId=ds.getKey();
DatabaseReference ref= db.child("Messages").child(MessageRecieverId).child(MessageSenderId).child(keyId);
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("Seen", true);
ref.updateChildren(childUpdates);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};

这将使用dataSnapshot.exists()检查数据库中是否存在该查询,如果该查询存在,您将能够更改子项的值。您需要使用 updateChildren() 方法仅更新一个属性。

查看此处了解更多信息:

https://firebase.google.com/docs/database/android/read-and-write#update_specific_fields

关于java - 根据查询更改 firebase 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52903484/

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