allow write: if /databases/(default)/documents/users/$(request.auth.uid) in
firestore.get(/databases/(default)/documents/businesses/$(businessDocId)).data.team;
get().data.team
值是一个数组,它包含一个Firestore文档引用类型。
我得到一个权限错误时,使用这个云存储,虽然在Firestore安全规则类似的调用工作。
第一行看起来不对劲
你想要这个做什么?
/databases/(default)/documents/users/$(request.auth.uid)
如果您想从Firestore中的文档中读取一个字段,也可以在那里使用firestore.get()
,就像您在第二行中所做的那样:
allow write:
if firestore.get(/databases/(default)/documents/users/$(request.auth.uid)).data.fieldToCheck
in firestore.get(/databases/(default)/documents/businesses/$(businessDocId)).data.team;
工作方案:
function isBusinessOwner(businessDocId) {
let businessTeamArray = firestore.get(/databases/(default)/documents/businesses/$(businessDocId)).data.team;
let businessOwner = businessTeamArray[0];
return businessOwner in businessTeamArray;
}
不幸的是,使用此解决方案,我必须手动选择数组中的索引,因此限制了数组中有多个业务所有者进行比较的可能性。