在 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[(req‌​uest.auth.uid)].data‌​.active