firebase完全不熟悉,我想将电话号码设置为主键(uid),将电子邮件设置为辅助键。如果我的Firebase数据库中存在这两个副本,如何防止它们重复?我的应用程序中没有任何身份验证。我这样做是为了防止重复表格
下面是我的JS代码
// Submit form
function submitForm(e){
e.preventDefault();
// Get values
var name = getInputVal('name');
var company = getInputVal('company');
var email = getInputVal('email');
var phone = getInputVal('phone');
var message = getInputVal('message');
// Save message
saveMessage(name, company, email, phone, message);
}
// Function to get get form values
function getInputVal(id){
return document.getElementById(id).value;
}
// Save message to firebase
function saveMessage(name, company, email, phone, message){
var newMessageRef = messagesRef.push();
newMessageRef.set({
name: name,
company:company,
email:email,
phone:phone,
message:message
});
}
以下是我在firebase中设置的规则
{
"rules": {
".read": "false",
".write": true,
"phone": { // assuming this as primary key
".validate": "newData.isString() &&
newData.val().length == 10 &&
!root.child('phone').child(newData.val()).exists()"
}
}
}
答案 0 :(得分:0)
我建议不要使用电话号码作为主键。将其用作唯一值。似乎您使用的是jquery.validate插件,因此您可以访问远程数据库并查看数据库以验证重复编号。 在您的脚本中.. 在您的saveMessage函数之前。调用ajax来查看数据库。如果该号码已存在,请阻止您提交表单,并提醒您该号码已存在。
在jquery validation with ajax call上提供的远程访问示例