java - 在 firebase 中使用 ids 检索嵌套数据?

标签 java android firebase firebase-realtime-database

我正在尝试从 Message 节点检索消息。 messages 中的每条消息都有一个 Id。我试图实现的最终结果只是每个用户的消息,或者是否有更好的方法来存储数据,因为我不需要存储消息的 key ,但是当我不包含旧数据的 key 时已删除。

structure of my data

 DatabaseReference dbfriends= FirebaseDatabase.getInstance().getReference().child("Users");
            dbfriends.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if(dataSnapshot.exists())
                    {
                            for (DataSnapshot productSnapshot:dataSnapshot.getChildren())
                            {
                                Log.i("IDDD",productSnapshot.toString());
                                Log.i("IDDDDDDDD",productSnapshot.child("Messages").getValue().toString());
                                   String friend=productSnapshot.child("Username").getValue().toString();
                                   Log.i("This is friend",friend.toString());
                                    friends.add(friend);

                            }

最佳答案

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference messagesRef = rootRef.child("Users").child(uid).child("Messages");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String sender = ds.child("sender").getValue(String.class);
            String message = ds.child("message").getValue(String.class);
            Log.d(TAG, sender + ": " + message);
        }
    }

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

logcat 中的结果将是:

Jeffy: Alic how r you?
Jeffy: Alic how r you?

如果您还需要 key ,只需使用:

String key = ds.getKey();

关于java - 在 firebase 中使用 ids 检索嵌套数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56066417/

相关文章:

java - 如何在Android中使用JAVA拆分ArrayList?

java - 使用该行的 id 编辑表的特定行,无需使用 jquery 进行数据库操作

android - 如何将注意力从 EditText 移开?

firebase - 对 firebase-storage 可下载 url 执行身份验证

java - 如何在 Spring Boot 测试类中为每个方法应用不同的配置?

java - 如何更改 JVM 的语言环境?

android - RemoteViewService Intent 上的 setData

android - 从放置在具有 GONE 可见性的 ViewGroup 中的 View 获取大小(以编程方式将其设置为 VISIBLE)

带有 Firebase RecyclerView 的 Android 搜索 View 不显示数据

android - 调试 Firebase 数据库