我正在构建一个联系人表单,并了解到一个快速的方法是将数据写入firestore,然后使用trigger e-mail扩展来发送电子邮件。
我已经设置了联系表单页面,并在输入验证后将字段发送到firestore:
let db = firebase.firestore();
db.collection("users").add({
name: getInputVal('name'),
email: getInputVal('email'),
phone: getInputVal('phone'),
message: getInputVal('message')
})
.then((docRef) => {
console.log("Document written with ID: ", docRef.id);
})
.catch((error) => {
console.error("Error adding document: ", error);
});
我只对消息使用Firestore(其他所有内容都保存在实时数据库中,在那里我设法创建了足够的安全规则)。我的权限好像有问题?
我想设置的是:
1.允许未经身份验证的用户写入Firestore messages
集合
1.仅允许管理员用户读取/删除邮件
1.在数据库级别设置验证,确保任何字段的长度都不超过200个字符,并且只能使用String类型
我试着遵循真实的数据库的逻辑,并有以下规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /messages/{message}{
allow write: if true
allow read: if "request.auth.uid === 'my_user_id'"
}
}
}
然而,每次我尝试运行上面的代码时,我最终都会捕获一个错误FirebaseError: Missing or insufficient permissions.
。
1条答案
按热度按时间0qx6xfy61#
下面的代码应该可以做到这一点:
请注意,不应在
request.auth.uid == 'my_user_id';
周围加上引号还请注意,您应该使用更细粒度的操作,即
create
和delete
。对于“任何字段的长度都不超过200个字符,并且只能使用String类型”的要求,您需要为每个字段执行以下操作: