在 collection - resource.data.model.submodel 中使用子模型时 Firebase Firestore 规则失败
Firebase Firestore rules fails when using a sub model in collection - resource.data.model.submodel
例如 - 以下规则将失败:allow update: if request.auth.uid == resource.data.creator.id;
我的 collection 是 Tasks/{taskId}
其中任务包含:
{
"Title",
// Creator is An object which contains the user who created it:
"Creator": {
"email",
"id"
}
}
因此对于上面的示例,即使用户是的创建者
,它也不允许用户更新它
官方文档里好像没有写,不过我是这样解决的:
allow update if: request.auth.uid == resource.data.creator.data.id;
注意resource.data.creator.data.id 所以对于每个子文档我们必须指定data再次。
为了补充 Gal 的回答,这里有一个使用 userId 的更复杂路径的示例。
Collection: /Projects/{projectId}
数据:users.{userId}.active
== true
规则:get(/databases/$(database)/documents/Projects/$(projectId)).data.users.data[(request.auth.uid)].data.active
例如 - 以下规则将失败:allow update: if request.auth.uid == resource.data.creator.id;
我的 collection 是 Tasks/{taskId} 其中任务包含:
{
"Title",
// Creator is An object which contains the user who created it:
"Creator": {
"email",
"id"
}
}
因此对于上面的示例,即使用户是的创建者
,它也不允许用户更新它官方文档里好像没有写,不过我是这样解决的:
allow update if: request.auth.uid == resource.data.creator.data.id;
注意resource.data.creator.data.id 所以对于每个子文档我们必须指定data再次。
为了补充 Gal 的回答,这里有一个使用 userId 的更复杂路径的示例。
Collection: /Projects/{projectId}
数据:users.{userId}.active
== true
规则:get(/databases/$(database)/documents/Projects/$(projectId)).data.users.data[(request.auth.uid)].data.active