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

时间:2018-06-23 10:22:07

标签: android firebase firebase-realtime-database

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

    }


});

我尝试了上面的代码,但没有用

1 个答案:

答案 0 :(得分:0)

如果必须具有唯一的属性组合,请考虑将这些属性的值用作节点的键。在您的示例代码段中,该代码如下所示:

{
  "users": {
    "U1EL9SSUQ_Peter_peter01": {
      "fName": "Peter",
      "ID": "U1EL9SSUQ",
      "username": "peter01"
    },
    "U1EL5623_John_john,doe": {
      "fName": "John",
      "ID": "U1EL5623",
      "username": "john.doe"
    }
  }
}

如果您以这种方式存储数据,则可以保证组合是唯一的,因为键在其父节点中按定义是唯一的。

请注意,值的唯一性以前已得到定期介绍,因此我建议您也检查一下其中的一些值: