在集合中使用子模型时,Firebase Firestore规则失败 - resource.data.model.submodel

时间:2017-10-24 14:59:32

标签: firebase firebase-security google-cloud-firestore

例如,以下规则将失败:allow update: if request.auth.uid == resource.data.creator.id;

我的收藏是Tasks / {taskId} 任务包含:

{
  "Title",
  // Creator is An object which contains the user who created it:
  "Creator": {
    "email",
    "id"
  }
}

因此,对于上面的示例,即使用户 创建者

,也不允许用户更新它

2 个答案:

答案 0 :(得分:3)

显然它不是在官方文档中写的,但我解决这个问题的方法是: allow update if: request.auth.uid == resource.data.creator.data.id;

注意资源。数据 .creator。数据 .id因此,对于每个子文档,我们必须再次指定数据

答案 1 :(得分:0)

要添加到Gal的答案,以下是使用userId的更复杂路径的示例。

收藏:/Projects/{projectId}

数据:users.{userId}.active == true

规则:get(/databases/$(database)/documents/Projects/$(projectId)).‌​data.users.data[(req‌​uest.auth.uid)].data‌​.active