检索当前用户的数据(user_id)Firebase?

时间:2018-03-21 14:48:59

标签: android firebase firebase-realtime-database firebase-authentication

enter image description here

        firebaseAuth = FirebaseAuth.getInstance();
        mDatabase = FirebaseDatabase.getInstance();
        mDb = mDatabase.getReference();
        FirebaseUser user = firebaseAuth.getCurrentUser();
        userKey = user.getUid();

        mDb.child(userKey).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Log.d(TAG, "Name: " + dataSnapshot.child("user_id").getValue());

                userID = String.valueOf(dataSnapshot.child("user_id").getValue());
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

我不知道我的代码有什么问题,我想检索用户ID的值。

3 个答案:

答案 0 :(得分:0)

我认为不是

mDb = mDatabase.getReference(); 

你应该使用

mDb = mDatabase.getReference("Tunanetra");

因为您正在寻找的用户是嵌套在。

答案 1 :(得分:0)

要解决此问题,请使用以下代码:

firebaseAuth = FirebaseAuth.getInstance();
mDatabase = FirebaseDatabase.getInstance();
mDb = mDatabase.getReference();
FirebaseUser user = firebaseAuth.getCurrentUser();
userKey = user.getUid();

mDb.child("Tunanetra").child(userKey).addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String userID = dataSnapshot.child("user_id").getValue(String.class);
        Log.d(TAG, "Name: " + userID);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
});

使用此代码,您将能够在logcat中打印出已经过身份验证并存在于id节点下的用户的Tunanetra。如果用户位于Orangtua节点下,则只需使用Tunanetra更改Orangtua

答案 2 :(得分:0)

很简单。 如果要检索用户数据。然后,您必须首先选择要在其中查找用户的子节点。

你需要节点Tunanetra和Orangtua

否则你可以通过方法尝试这个订单。

FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
        FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();
        DatabaseReference mDb = mDatabase.getReference();
        FirebaseUser user = firebaseAuth.getCurrentUser();
        String userKey = user.getUid();

        //First Approach
        mDb.child("Tunanetra").child(userKey).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String userID = String.valueOf(dataSnapshot.child("user_id").getValue());
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

        //Second Approach
        mDb.child("Tunanetra").orderByChild("email").equalTo(user.getEmail()).limitToFirst(1).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                if(dataSnapshot.getChildrenCount()>0){
                    for(DataSnapshot data : dataSnapshot.getChildren()){
                        String userID = String.valueOf(data.child("user_id").getValue());
                    }
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });