检查Firebase数据库中是否存在跨多个子节点的用户

时间:2018-04-20 13:26:00

标签: java android

我有一个像这样的数据库

"Node" : {
    "Location_1" : {
      "ID1" : {
        "address" : "address1",
        "balance" : "20",
        "batch" : "xyz",
        .
        .
        .
        "studentID" : "ID1",
        "studentName" : "Username",
        "total" : "amount"
      }
    },
    "Location_2" : {
      "ID2" : {
        "address" : "address2",
        "balance" : "0",
        "batch" : "xyz",
        .
        .
        "studentID" : "ID2",
        "studentName" : "username",
        "total" : "amount"
      }
    }
    "Location_3" : {
      "ID3" : {
        "address" : "address3",
        "balance" : "0",
        "batch" : "xyz",
        .
        .
        "studentID" : "ID3",
        "studentName" : "username",
        "total" : "amount"
      }
    }

我可以使用下面给出的代码检查ID1是否存在于特定的Location_1中,但是我无法找到ID1是否存在于不同的Location_X id中。

String url = "https://firebaseURL/Node/";
url = url + Location_1;
databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl(url);
    databaseReference.child(ID1).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()) {
                Toast.makeText(getApplicationContext(), "ID already present. Enter unique ID!", Toast.LENGTH_SHORT).show();
            }

            else { // not present, so go ahead and add

}

我尝试使用这样的函数来检查用户是否存在于所有子节点中。

private boolean checkIfUserExists(String ID) {
    ArrayList<String> arrayList = new ArrayList<String>();
    arrayList.add("Location_1");
    .
    .

    String url = "https://firebaseURL/Node/";
    databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl(url);
    for(String s: arrayList){
    if(getUserExists())
        break;
    databaseReference.child(s).child(ID).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                    setUserExists(true);
            }
        }

但是函数getUserExists总是返回false。所以我最终在不同的位置添加新用户或在同一位置更新用户的信息。 请让我知道如何继续检查所有locationIDs中是否存在userID

0 个答案:

没有答案