我的firebase数据库包含系列。这些家庭有parents
和其他属性,如地址等。我希望允许父母写入他们的家庭文件访问权限,并拥有对其他家庭的只读访问权限。如何使用安全规则语法表达这一点?
假设数据如下:
families (collection)
"TheSmiths" (doc) {
parents: [{ firstname: "John", role:"dad", userId:"xxxx" },
{ firstname: "Joan", role:"mom", userId:"yyyy" } ],
address: "123 Oak Lane"
}
"TheJoneses" (doc) etc.
到目前为止,我对规则的最佳看法是这样的:
service cloud.firestore {
match /databases/{database}/documents {
// any user can read the families
match /families/{anyDocument} {
allow read: if request.auth != null;
}
// here's my problem
match /families/{anyDocument} {
allow read, write: if resource.data.parents.userId == request.auth.uid;
}
}
}
第二条规则是试图说,如果用户的id存储在其中一个父母中,则允许读写家庭文档。我遇到的问题是""之一的语法。父母。也许我可以说:
if ((resource.data.parents[0].userId == request.auth.uid) ||
(resource.data.parents[1].userId == request.auth.uid))
我可以吗?即使我可以,数据可能包含多于或少于两个成年人,他们可以被视为父母进行编辑。我甚至关闭了吗?
答案 0 :(得分:0)
查看Firebase docs
你可以尝试这样的事情
match /families/{anyDocument} {
allow read: if request.auth != null;
allow write: if resource.data.parents.userId in [(request.auth.uid)];
}
如果您在parents/userId
地图路径中列出,则表示允许读取您的身份验证并写入。
我没有检查过自己,希望这会有所帮助。