【问题标题】:Can I create a map in Firestore Rules?我可以在 Firestore 规则中创建地图吗?
【发布时间】:2020-05-12 05:49:50
【问题描述】:

我为每个文档都有一组管理员,可以访问该文档。数组中的项都是类似这样的对象:

[
    {user_ID : "Wfdwwwrdfsdfsdf",
    avatar: "www.dfsfsd.com/dfdfd"
    name: "Ben Ben"
    },
    {user_ID : "Hdfsdbbf",
    avatar: "www.dfsfsd.com/popo"
    name: "Josh Josh"
    }
]

在我的 Firestore 规则中,我想检查发出请求的用户是管理员,所以我需要检查他们的 uid 是否是该数组的一部分。在 JS 中,我只需使用地图从数组管理员创建一个新数组,该数组仅包含 ID,并检查 ID 是否存在。在 Firestore 规则中,这似乎不是一个选项。我怎样才能解决这个问题? 我是否必须创建另一个仅存储每个文档的管理员 ID 的数组?这似乎太过分了。 无法真正找到我在使用 Firestore 时可以使用的所有方法和功能。我找到的只是某些操作的示例。

【问题讨论】:

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


    【解决方案1】:

    无法在规则中执行循环,因此您将无法遍历对象并创建 ID 数组。预先计算好这组管理员似乎是最好的选择,然后您就可以这样做了

     allow update: if request.auth.uid in resource.data.admins
    

    另一种选择是将您的管理员数组转换为以 uid 为键的地图。那么你就不需要复制密钥了。

    {
        Wfdwwwrdfsdfsdf : {
            avatar: "www.dfsfsd.com/dfdfd"
            name: "Ben Ben"
        },
        Hdfsdbbf: {
            avatar: "www.dfsfsd.com/popo"
            name: "Josh Josh"
        }
    }
    

    规则不变

    包含您可以使用的所有功能的参考是here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 2011-05-11
      • 1970-01-01
      相关资源
      最近更新 更多