I am using Firebase to keep my users in database.
for now it is like this:
I want to make it unique with rules.
Rules:
{
"rules": {
".read": true,
".write": true
}
}
Also, I am creating users like this:
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);
}
Then calling it like this:
createUser(name);
As a result, I want to force unique for "Users-->uname" in my database.
How to force unique by rule?
EDIT
I changed my createUser function but there is another problem for now. I did like this:
private void createUser(String uname){
Map<String,Object> newUser = new HashMap<String, Object>();
newUser.put("uname",uname);
// newUser.put("soyad","soyad");
DatabaseReference dbref = firedb.getReference();
//dbref.child("Users").push().setValue(newUser);
dbref.child("User").child(uname).setValue(true, new DatabaseReference.CompletionListener() {
public void onComplete(DatabaseError error, DatabaseReference ref) {
System.out.println("Value was set. Error = "+error);
//Here, always working even if there is no same username
}
});
}
But, now oncomplete always working although I write different username.
Logcat always like this(if I write same username or different username, same result)
05-22 13:37:56.611 3925-3925/xxx I/System.out: Value was set. Error = null
05-22 13:38:11.551 3925-3925/xxx I/System.out: Value was set. Error = null
05-22 13:38:19.641 3925-3925/xxx I/System.out: Value was set. Error = null
05-22 13:38:44.981 3925-3925/xxx I/System.out: Value was set. Error = null
05-22 13:42:17.091 3925-3925/xxx I/System.out: Value was set. Error = null
05-22 13:42:27.741 3925-3925/xxx I/System.out: Value was set. Error = null
05-22 13:42:34.491 3925-3925/xxx I/System.out: Value was set. Error = null
Finally, how can I check if the username exist in database?