且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何根据ID授予对Firebase数据库中某些对象的访问权限

更新时间:2021-07-14 21:45:57

要实现此目的,您需要查询数据库两次.请使用以下代码:

To achieve this, you need to query your database twice. Please use the following code:

FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
String uid = firebaseUser.getUid();

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = usersRef.child("users").child(uid);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String aid = ds.getKey();

            DatabaseReference animalRef = rootRef.child("animals").child(aid);
            ValueEventListener valueEventListener = new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dSnapshot) {
                    int age = dSnapshot.child("age").getValue(Integer.class);
                    String name = dSnapshot.child("name").getValue(String.class);
                    String url = dSnapshot.child("url").getValue(String.class);
                    Log.d("TAG", age + " / " + name + " / " + url);
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {}
            };
            animalRef.addListenerForSingleValueEvent(valueEventListener);
        }
    }

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

其中uid是已登录用户的ID,aid是动物的ID.您的输出将是:

In which uid is the id of the logged-in user and aid is the id of the animal. Your output will be:

11 / dog1 / http...
12 / dog2 / http...