Firebase使用Android中的子数据检索父数据

时间:2018-04-30 15:02:01

标签: android firebase firebase-realtime-database

如何通过使用其子用户ID获取父级?因为我只在用户登录时才获得userID。我想用他们的用户ID列出他们所有的食物。

enter image description here

3 个答案:

答案 0 :(得分:0)

这些密钥是由push()方法创建的,您应该在使用getKey()

获取数据快照后获取此密钥

在调用d atasnapshot.getChildren()之后,你应该创建一个字符串

String myParentKey = datasnapshot.getKey().toString();

为了获得所有孩子的父键,这当然是一个循环,这里有一个提示

 public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            String myParentKey = childSnapshot.getKey().toString();

...

希望它有所帮助!

快乐的编码!

答案 1 :(得分:0)

你可以使用orderByChild和equalTo获取食物对象快照,之后获取foodSnapshot的关键

final Query userQuery = FirebaseDatabase.getInstance().getReference().child("Food").orderByChild("uid");

    userQuery.equalTo("BNeBA...........").addListenerForSingleValueEvent(
        new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot foodSnapshot: dataSnapshot.getChildren()) {
                    // result
                    String key = foodSnapshot.getKey();
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        }
    );

参考:https://firebase.google.com/docs/database/android/lists-of-data

答案 2 :(得分:0)

这是适合我的代码。

        DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");

    ref.child(uid).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String name = (String) dataSnapshot.child("u_username").getValue();
            show_username.setText(name);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });