Как я могу добавить ребенка под ребенком без определенного пути? - PullRequest
0 голосов
/ 08 июня 2019

У меня есть узел с именем "Чаты", под этим узлом есть много чатов с определенным идентификатором.Каждый из этих узлов с идентификатором содержит сообщения.Сообщения должны быть добавлены без какого-либо конкретного пути.Как я могу это сделать? X

У меня есть следующий код, но мне не хватает одного уровня:

final DatabaseReference chat = FirebaseDatabase.getInstance().getReference("CHATS").child(chatID);
        chat.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (!dataSnapshot.exists()){
                    chat.child("_s").setValue(sender);
                    chat.child("_r").setValue(reciever);
                    chat.child("_m").setValue(msg);
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

Мне нужно, чтобы значения создавались в одном узле как сообщение.Но они создаются прямо под chatID.Примерно так:

final DatabaseReference chat = FirebaseDatabase.getInstance().getReference("CHATS").child(chatID);
        chat.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (!dataSnapshot.exists()){
                    chat.CHILD().child("_s").setValue(sender);
                    chat.CHILD().child("_r").setValue(reciever);
                    chat.CHILD().child("_m").setValue(msg);
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

Структура должна выглядеть так: https://cdn -images-1.medium.com / max / 800/1 * AHL1ZE8Kt1ctIL2LfZ0z1w.png

1 Ответ

0 голосов
/ 08 июня 2019

Работает с комбинацией ValueEventListener и push (). SetValu (Object):

final String chatID = getChatLeaderID(sender, reciever);
    final DatabaseReference chat = FirebaseDatabase.getInstance().getReference("CHATS2").child(chatID);
    final HashMap<String, Object> hashMapMsg = new HashMap<>();
    hashMapMsg.put("_s", sender);
    hashMapMsg.put("_r", reciever);
    hashMapMsg.put("_m", msg);
    chat.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                chat.push().setValue(hashMapMsg);
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

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