Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase在Android中使用子数据检索父数据_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

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

Firebase在Android中使用子数据检索父数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,如何使用其子用户ID获取父用户?因为我只在用户登录时获取用户ID。我想用他们的用户ID列出他们所有的食物 这些键是通过push()方法创建的,您应该在使用getKey()获取datasnapshot后获取这些键。 在调用datasnapshot.getChildren()之后,应该生成一个字符串 String myParentKey = datasnapshot.getKey().toString(); 为了获得所有孩子的父密钥,这当然是在一个循环中,这里有一个提示 public void

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


这些键是通过
push()
方法创建的,您应该在使用
getKey()获取datasnapshot后获取这些键。

在调用d
atasnapshot.getChildren()
之后,应该生成一个字符串

String myParentKey = datasnapshot.getKey().toString();
为了获得所有孩子的父密钥,这当然是在一个循环中,这里有一个提示

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

希望有帮助


快乐编码

您可以使用orderByChild和equalTo获取食物对象快照,然后获取食物快照的键

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) {

            }
        }
    );

参考:

这是适合我的代码

        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) {

        }
    });

试试看。对不起,我是firebase的初学者。。这是否意味着在我插入新食物后,我需要立即获得钥匙?如果一个用户插入了许多食物?当for循环语句执行时,您将获得由新值生成的所有新键,您只需要声明一次getkey