如何检查 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
,上面的代码会隐藏按钮,否则会显示它。
当登录的用户在实时 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
,上面的代码会隐藏按钮,否则会显示它。