我在 android 中有一个注册卖家的应用程序,它有一个唯一的电子邮件,我将它们存储在 firebase 中。创建一个规则以不允许添加重复项,但它似乎不起作用。我做错了什么?
{
"rules": {
".read": true,
".write": true,
"sellers": {
"$seller": {
"email": {
".write": "!data.exists()"
}
}
}
}
}
我的添加方法
public void addSeller(Seller seller){
HashMap<String,Seller> map= new HashMap<>() ;
String email = seller.getEmail().replace(".",",");
map.put(email,seler);
database.child("sellers").setValue(map);
}
最佳答案
您正在调用 push()
,它会生成一个统计上保证唯一的新 child 。
如果您想确保唯一的电子邮件地址,您将必须保留一个集合,其中(编码的)电子邮件地址是关键:
emails
pete@somedomain,com
puf@somedomain,com
使用此结构,以下规则将起作用以确保电子邮件地址只能写入一次:
{
"rules": {
".read": true,
"emails": {
"$email": {
".write": "!data.exists()"
}
}
}
}
唯一值这个话题经常出现,所以我建议你也看看这些:
关于android - 规则条目重复 firebase 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44203936/