如何检查Firebase中是否存在儿童?
我有一个名为users的节点的firebase。用户提供用户名,我想检查用户名是否已经作为用户节点的子节点存在。这是我目前正在尝试的代码。该平台是android。如何检查Firebase中是否存在儿童?
String myUsername = userNameInputET.getText().toString();
if(mUsersRef.child(myUsername) == null) {
//do stuff
} else {
//do other stuff
}
此代码不能正常工作,它总是转到别的,即使与给定用户名孩子不存在。该怎么办?
我相信你需要更改您的代码
String myUsername = userNameInputET.getText().toString();
if(mUsersRef.child(myUsername).getValue() == null) {
//do stuff
} else {
//do other stuff
}
String myUsername="User";
if (root.child(myUsername).getRoot() == null) {
} else {
Map<String, Object> map = new HashMap<String, Object>();
map.put("user", "");
root.updateChildren(map);
你能描述你为什么选择这个解决方案吗? – Squazz 2016-09-21 08:35:48
@Hassan Amjad,这似乎是一个不错的尝试,但是当我运行该代码时,即使“用户”节点不存在,它仍然给了我一个URL。它从不为空。我也试过root.child(myUsername).getKey()。但即使如此,其他想法也失败了。 – user3833732 2017-07-04 17:39:13
你好检查这个https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot
// Test for the existence of certain keys within a DataSnapshot
var ref = firebase.database().ref("users/ada");
ref.once("value")
.then(function(snapshot) {
var a = snapshot.exists(); // true
var b = snapshot.child("name").exists(); // true
var c = snapshot.child("name/first").exists(); // true
var d = snapshot.child("name/middle").exists(); // false
});
我认为他正在寻找一个可以用于Java而不是Javascript的答案。 – aconnelly 2016-11-20 09:05:16
浪费两小时这个问题。尝试了一切,但没有任何解决方案奏效。 我使用firebase onChildAdded的数据读取代码来获取用户数据,然后使用if else条件来确定它。
在的onCreate
mFirebaseDatabase=FirebaseDatabase.getInstance();
mMessagesDatabaseReference=mFirebaseDatabase.getReference().child("user").child(root).child(id);
attachDatabaseReadListener();
监听方法
private void attachDatabaseReadListener() {
if (mChildEventListener == null) {
mChildEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
User u = dataSnapshot.getValue(User.class);
mUser=u.GetUser();
mEmail=u.GetEmailId();
Toast.makeText(getApplicationContext(),"here"+mUser,Toast.LENGTH_SHORT).show();
}
public void onChildChanged(DataSnapshot dataSnapshot, String s) {}
public void onChildRemoved(DataSnapshot dataSnapshot) {}
public void onChildMoved(DataSnapshot dataSnapshot, String s) {}
public void onCancelled(DatabaseError databaseError) {}
};
mMessagesDatabaseReference.addChildEventListener(mChildEventListener);
}
}
条件检查,它可以是任何东西。
if(mUser==null&&mEmail==null) {
//do something here
}
else
{
//do nothing
}
注:需要一些时间来执行对儿童加入这么加适当的延迟 我只有一个节点,以便该代码工作完美的我。如果有其他解决方案或更简单的解决方案可用,请让我知道。
如果根节点不存在,那么它也将显示为空,因此请在部署应用程序推送根节点之前记住这一点。
这样做的一种方法记录在这里:http://*.com/q/24824732/209103(该答案适用于Firebase的JavaScript SDK,但逻辑与任何支持的平台相同)。 – 2015-04-02 00:29:32