java - 使用规则使用户名唯一
问题描述
我正在使用 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);
因此,我想在我的数据库中强制“ Users-->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
最后,如何检查用户名是否存在于数据库中?
解决方案
推荐阅读
- python - Textacy 没有模块预处理或规范化空格
- c# - 起订量设置报告“表达式不是方法调用”
- javascript - 未捕获的类型错误:无法读取未定义的属性“ref”
- python - 如何通过 XPath 从具有多个条件选项的动态图表中进行 Web 抓取?
- pyspark - 使用 pyspark 将 unix_timestamp 列转换为字符串
- c++ - 带参考的矢量
- python - 通过标签名称在 Matplotlib.pie 中设置颜色
- apache-spark - pyspark unix_timestamp 有时会返回 null
- ios - 使用 RunLoop.current.run 清理 SimplePing 代码
- node.js - 如何将处理后的数据推送到列表,然后从快递发送响应?