检查Android中Firebase DB中是否存在数据
在我的代码中,这3个字段可能会被再次添加,并使用不同的父id 例如,这可能会再次添加,这是我想要避免的检查Android中Firebase DB中是否存在数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,在我的代码中,这3个字段可能会被再次添加,并使用不同的父id 例如,这可能会再次添加,这是我想要避免的 { "users": { "-KKUmYgLYREWCnWeHCvO": { "fName": "Peter", "ID": "U1EL9SSUQ", "username": "peter01" }, "-BBUmYgLYREWCnWPDndk": { "fName": "John", "ID": "U1E
{
"users": {
"-KKUmYgLYREWCnWeHCvO": {
"fName": "Peter",
"ID": "U1EL9SSUQ",
"username": "peter01"
},
"-BBUmYgLYREWCnWPDndk": {
"fName": "John",
"ID": "U1EL5623",
"username": "john.doe"
}
}
}
那么,如何检查唯一父id下的所有3个字段是否都已存在
"fName": "Peter",
"ID": "U1EL9SSUQ",
"username": "peter01"
我尝试了上面的代码,但是如果您有一个必须唯一的属性组合,并且考虑使用这些属性的值作为节点的键,那么它就不起作用了。在您的示例代码段中,如下所示:
mDatabaseUsers.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data: dataSnapshot.getChildren()){
if (data.child("fName").exists() && data.child("ID").exists() &&
data.child("username").exists()) {
//do ur stuff
} else {
//do something
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
如果以这种方式存储数据,则组合保证是唯一的,因为根据定义,键在其父节点中是唯一的
请注意,以前已经定期讨论了值的唯一性,因此我建议您也查看其中一些:
{
"users": {
"U1EL9SSUQ_Peter_peter01": {
"fName": "Peter",
"ID": "U1EL9SSUQ",
"username": "peter01"
},
"U1EL5623_John_john,doe": {
"fName": "John",
"ID": "U1EL5623",
"username": "john.doe"
}
}
}