我试图将文档 CRUD 操作限制为仅文档创建者。创建文档(=笔记)时,它们根据当前用户从 auth 获取用户 ID,以便正常工作。我尝试像这样设置 firestore 规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /notes/{document=**} {
allow read, write: if request.auth != null && request.auth.uid == resource.data.userid;
}
}
}
但我收到错误:权限缺失或不足。
我也尝试过没有
&& request.auth.uid == resource.data.userid;
的规则,然后它就可以工作了,但显然为所有经过身份验证的用户提供了 CRUD 访问权限(不仅仅是内容所有者)。
感谢帮助!
通过将 userQuery 添加到代码中来修复:
const userQuery = query(notesRef, where("userid", "==", userid))
const docSnap = await getDocs(userQuery);
const notesData: Note[] = docSnap.docs.map((doc) => ({
...(doc.data() as Note),
id: doc.id
}));