我在firebase中遇到addind数据的麻烦,应该检查该帐户是否已注册的代码无法正常工作。这是使用的代码和结构:
mDatabase = FirebaseDatabase.getInstance().getReference("Users");
mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data: dataSnapshot.getChildren()){
Log.d("child:",data.getKey());
if (data.child(user.getName()).exists()) {
Log.d("child exists",user.getName());
Toast.makeText(getApplicationContext(),
"child already exists",
Toast.LENGTH_LONG).show();
continue;
} else {
mDatabase.push().setValue(user);
}
}
}
规则:
{
/* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
"rules": {
".read": true,
".write": true
}
}
它添加一个用户,而不是输入if部分...
答案 0 :(得分:1)
您可以做的是直接使用orderByChild()
和equalTo()
来查找是否存在具有特定用户名的用户。
这将完美地在此数据库结构中工作,并且它将是一个更好的解决方案。代码看起来像这样:
reference.orderByChild("name").equalTo(user.getName()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists())
// do what you want
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
)};