Как изменить значение потомка неизвестного родителя в Firebase - Android - PullRequest
0 голосов
/ 25 марта 2019

Я работаю над приложением чата Firebase. Я пытался изменить дочернее значение для неизвестного родителя в Firebase, но не могу сделать это правильно

Вот моя структура базы данных Firebase:

База данных Firebase

Я хочу изменить значение "seen" с false на true, когда пользователь открывает активность сообщений.

Каждое сообщение имеет идентификатор push, значение которого я не знаю. Я хочу иметь возможность редактировать дочерний элемент push id.

Вот мой код:

DatabaseReference messageRef = mRootRef.child("messages").child(mCurrentUserId).child(mChatUser);

 messageRef.child("seen").setValue(true).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            Log.d("isseen", "Seen set to true");
                        } else {
                            Log.d("isseen", "Seen not set to true");
                        }


                    }
                });

Как лучше всего достичь желаемых результатов?

1 Ответ

0 голосов
/ 25 марта 2019

Чтобы решить эту проблему, вам нужно использовать запрос. Поэтому, пожалуйста, используйте следующие строки кода:

DatabaseReference messageRef = mRootRef.child("messages").child(mCurrentUserId).child(mChatUser);
Query query = messageRef.orderByChild("seen").equalTo(false);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            ds.child("seen").getRef().setValue(true);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
query.addListenerForSingleValueEvent(valueEventListener);

Результатом будет изменение вашей seen собственности с false на true.

Если в какой-то момент вы также попытаетесь использовать Cloud Firestore , здесь вы можете найти учебное пособие по созданию полного и функционального Firestore Chat App с использованием Kotlin .

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