How to prevent duplicated uname of Users Firebase [duplicate]

狂风中的少年 提交于 2019-12-24 08:15:54

问题


I am adding username for my Chat App to Firebase Database successfully.

I implemented in activity:

FirebaseDatabase firedb = FirebaseDatabase.getInstance();

in createUser Method.

private void createUser(String uname){
    Map<String,Object> newUser = new HashMap<String, Object>();
    newUser.put("uname",uname);
    DatabaseReference dbref = firedb.getReference();
    dbref.child("Users").push().setValue(newUser);
}

When user click a button this method works. This method work correctly but I want to make uname primary key. I do not want to add a username if it is alerady exists.

Database Structure:

Rules:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

Finally, how to prevent duplicated uname ?


回答1:


You have to add a top level /uname/ Node. Your data will be like this for example :

{
  "Users" : {
    "user1" : {
      "uname" : "value1",
    },
    "user2" : {
      "uname" : "value2",
    },
    "user3" : {
      "uname" : "value3",
    },
  },
  "uname" : {
    "value1": "user1",
    "value2": "user2",
    "value3": "user3",
  }
}

Now you have to Enforce New Data Structure:

{
  "rules": {
    "users": {
        "uname": { 
          ".validate": "!root.child('uname').child(newData.val()).exists()"
      },
    }
  }
}


来源:https://stackoverflow.com/questions/41808804/how-to-prevent-duplicated-uname-of-users-firebase

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!