有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android Studio如何从Firebase数据库获取名称的用户日志?

我有这个代码,我怎么能只得到记录的name值呢?我只需要让名字的用户登录,谢谢

 DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference usuariosRef = rootRef.child("Usuarios");
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("name").getValue(String.class);
            Log.d("TAG", name);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
usuariosRef.addListenerForSingleValueEvent(eventListener);

这会获取所有名称,我只想记录该名称的用户


共 (2) 个答案

  1. # 1 楼答案

    要显示数据库中的所有用户,请使用以下代码:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference usuariosRef = rootRef.child("Usuarios");
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                String name = ds.child("name").getValue(String.class);
                Log.d("TAG", name);
            }
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {}
    };
    usuariosRef.addListenerForSingleValueEvent(eventListener);
    

    输出将是所有已登录用户的名称:

    Eric
    Julian Ramos
    //and so on
    

    要仅获取单个用户的详细信息,请使用以下代码:

    String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    
    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference uidRef = rootRef.child("Usuarios").child(uid);
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String name = dataSnapshotds.child("name").getValue(String.class);
            Log.d("TAG", name);
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {}
    };
    uidRef.addListenerForSingleValueEvent(eventListener);
    

    因此,现在可以显示数据库中的所有用户,或仅显示登录的用户

  2. # 2 楼答案

    它正在检索所有名称,因为您正在遍历所有用户。要获取当前用户名,只需使用用户的uid即可。要获取当前用户的uid,请执行以下操作:

    String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    

    然后可以使用此uid仅获取当前用户

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference usuariosRef = rootRef.child("Usuarios");
    DatabaseReference current_userRef = usuariosRef.child(uid);
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
    
            String name = datasnapshot.child("name").getValue(String.class);
            Log.d("TAG", name);
    
    }
    
    @Override
    public void onCancelled(DatabaseError databaseError) {}
    };
    current_UserRef.addListenerForSingleValueEvent(eventListener);
    

    希望这有帮助