如何检查 firebase 中的 child 值并隐藏该用户登录的按钮?

How to check a child value in firebase and hide a button for that user logged in?

当登录的用户在实时 Firebase 数据库中具有指定值时,我想在我的应用程序中隐藏 Button

所以我有一个 child,其中值在 Yes 或 No 之间变化,这取决于用户拥有的权限。所以我想隐藏一个 Button 当用户有值 No 和当用户有值 Yes 时,它将可用。

我的 Firebase 数据库结构是这样的:(child “hasusersstorage” 是或否 (Ja/Nei) Firebase structure

这是我试过但未能成功的代码。 currentUser 正在工作,因为我用它来设置带有登录用户名的文本。

databaseUsers.child(currentUser).child("hasuserstorage").equalTo("Nei").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {

                if (dataSnapshot.hasChild("hasuserstorage")) {

                    bttoaddtool.setVisibility(View.GONE);
                }
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

希望有人能帮帮我。

I want to hide a Button in my app when the user that is logged in has a specified value in the Firebase database.

如果你想实现这一点,那么你应该创建一个精确指向 hasuserstorage 字段的引用。

当您使用以下代码查询时:

databaseUsers.child(currentUser).child("hasuserstorage").equalTo("Nei");

这并不意味着您正在检查 logged-in 用户的 hasuserstorage 字段是否包含 Nei 的值。假设 Ansatte 是你的根节点的直接子节点,要解决这个问题,请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference hasUserStorageRef = db.child("Ansatte").child(uid).child("hasuserstorage");
hasUserStorageRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            DataSnapshot snapshot = task.getResult();
            if(snapshot.exists()) {
                String hasuserstorage = snapshot.getValue(String.class);
                if(hasuserstorage.equals("Ja")) {
                    Log.d("TAG", "hasuserstorage is Ja");
                    bttoaddtool.setVisibility(View.VISIBLE);
                } else if(hasuserstorage.equals("Nei")) {
                    Log.d("TAG", "hasuserstorage is Nei");
                    bttoaddtool.setVisibility(View.GONE);
                }
            }
        } else {
            Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
        }
    }
});

如果hasuserstorage的值是Nei,上面的代码会隐藏按钮,否则会显示它。