检查Android中Firebase DB中是否存在数据

检查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

在我的代码中,这3个字段可能会被再次添加,并使用不同的父id 例如,这可能会再次添加,这是我想要避免的

{
  "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"
    }
  }
}