Изменение базы данных в соответствии с запросом - PullRequest
0 голосов
/ 20 октября 2018

Код

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

Это запрос, и я хочу изменить другого потомка, если этот запрос является истинным ... Как и в случае добавления обработчика события value и извлечения данных выше, запрашивает данные ... только этовместо извлечения я хочу изменить данные, но я не могу использовать метод setValue внутри слушателя события value, так что мне делать?

У меня также есть UIDS внутри MessageRecieverId и внутри, что From

enter image description here

1 Ответ

0 голосов
/ 20 октября 2018

Попробуйте выполнить следующее:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...