使用规则使用户名唯一

时间:2018-05-21 17:43:05

标签: java android firebase firebase-realtime-database firebase-authentication

我正在使用Firebase将我的用户保留在数据库中。

现在就是这样:

enter image description here

我希望通过规则使其独一无二。

规则:

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

最后,如何检查数据库中是否存在用户名?

0 个答案:

没有答案