Попробуйте выполнить следующее:
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