我正在使用Firebase将我的用户保留在数据库中。
现在就是这样:
我希望通过规则使其独一无二。
规则:
{
"rules": {
".read": true,
".write": true
}
}
另外,我正在创建这样的用户:
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);
}
然后这样称呼它:
createUser(name);
因此,我想强制在我的数据库中使用“用户 - &gt; uname ”。
如何通过规则强制独特?
修改
我更改了我的createUser函数,但现在还有另一个问题。 我确实喜欢这个:
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
}
});
}
但是,现在oncomplete总是工作,虽然我写了不同的用户名。
Logcat总是这样(如果我写相同的用户名或不同的用户名,相同的结果)
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
最后,如何检查数据库中是否存在用户名?