{
"users": {
"-KKUmYgLYREWCnWeHCvO": {
"fName": "Peter",
"ID": "U1EL9SSUQ",
"username": "peter01"
},
"-BBUmYgLYREWCnWPDndk": {
"fName": "John",
"ID": "U1EL5623",
"username": "john.doe"
}
}
}
在我的代码中,有可能再次添加这3个字段,并且使用不同的父ID 例如,可以再次添加它,我想避免
"fName": "Peter",
"ID": "U1EL9SSUQ",
"username": "peter01"
那么如何检查唯一父ID下的所有3个字段是否已经存在?
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) {
}
});
我尝试了上面的代码,但没有用
答案 0 :(得分:0)
如果必须具有唯一的属性组合,请考虑将这些属性的值用作节点的键。在您的示例代码段中,该代码如下所示:
{
"users": {
"U1EL9SSUQ_Peter_peter01": {
"fName": "Peter",
"ID": "U1EL9SSUQ",
"username": "peter01"
},
"U1EL5623_John_john,doe": {
"fName": "John",
"ID": "U1EL5623",
"username": "john.doe"
}
}
}
如果您以这种方式存储数据,则可以保证组合是唯一的,因为键在其父节点中按定义是唯一的。
请注意,值的唯一性以前已得到定期介绍,因此我建议您也检查一下其中的一些值: