【发布时间】:2018-07-04 11:49:10
【问题描述】:
我在 Firestore 中实现了一本食谱书,其中每个用户都可以看到所有用户创建的所有食谱,但只有食谱的原始作者可以编辑或删除食谱。还允许任何用户创建新配方。
我的问题是我无法设置子集合在子集合父文档的字段上“侦听”的权限。
每个配方文档包含三件事。一个名为 name 的字段用于存储配方名称,一个名为 creatorUID 的字段用于存储创建者 uid 的 request.auth.uid 以及一个名为 ingredients 的子集合,其中包含带有一些随机字段的文档。
service cloud.firestore {
match /databases/{database}/documents {
function isSignedIn() {
return request.auth != null;
}
match /ListOfRecipes/{recipe} {
allow read, create: if isSignedIn();
allow update, delete: if resource.data.creatorUID == request.auth.uid;
match /{list=**} {
allow read: if isSignedIn();
// Should return true if recipe.creatorUID has same value as request.auth.uid
allow write: if recipe.creatorUID == request.auth.uid;
}
}
}
}
问题在于,这些规则仅适用于创建配方文档。由于数据库说,子集合及其文档没有创建
FirebaseError:[code=permission-denied]:权限缺失或不足。 FirebaseError:缺少权限或权限不足。
调用来自 Angular 客户端及其官方库。
【问题讨论】:
-
你在
match /{list=**}里面试过allow write: if request.data.creatorUID == request.auth.uid;吗? -
据我所知 request.data 包含要写入的数据,因为我不想写那段数据......或者?......
标签: firebase firebase-security angularfire2 google-cloud-firestore