我的项目有2个主要集合:“联系人”和“相册”。
这是我的data structure
我正在尝试为“相册”集合中的每个人分配完全读取权限,并将写入权限限制为未经身份验证的用户。 同时,我想向未认证的用户分配写访问权限,并在“联系人”集合中向已认证的用户读取,更新,删除。
对于已认证的请求和未认证的请求,当前规则集在规则模拟器中均失败。规则如下:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /contact/{document=**} {
allow create;
allow read, update, delete: if request.auth != null;
}
}
match /albums/{document=**}{
allow read;
allow write: if request.auth != null;
}
}
firebase查询返回“ onSnapshot中的未捕获错误:FirebaseError:权限丢失或不足。”
以下查询:
useEffect(() => {
const unmount = firestore
.collection("albums")
.orderBy("date", "asc")
.onSnapshot((snapshot) => {
const tempAlbums = [];
snapshot.forEach((doc) => {
tempAlbums.push({ ...doc.data(), id: doc.id });
});
setAlbums(tempAlbums);
});
return unmount;
}, []);
关于如何纠正规则的任何想法?
答案 0 :(得分:1)
您的规则中有错字。应该是这样的:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /contact/{document=**} {
allow create;
allow read, update, delete: if request.auth != null;
} //The /albums path must be included inside /documents
match /albums/{document=**}{
allow read;
allow write: if request.auth != null;
}
}
}