【问题标题】:Is there any way to validate array in firestore rules有什么方法可以验证 Firestore 规则中的数组
【发布时间】:2018-12-16 15:20:52
【问题描述】:

当我在 firebase 控制台中看到我的数据时,它会如下所示

我正在编写 Firestore 安全规则来保护数据。

安全规则:

     match /wallpost/{wallpostId} {
          allow read: if true;
          allow list: if request.query.limit <= 10;
          allow create, update, delete: if resource.data.createdBy == request.auth.uid && request.resource.data.createdBy is string && request.resource.data.description is string 
// && **HERE I WANT VALIDATE TAG - WHICH IS A ARRAY OF STRING** 
        }

有人知道如何验证 Firestore 中的数据数组吗?

(我的想法:如果我们不能在 firestore 中验证数组,任何人都可以注入大量垃圾数据并破解 firestore。所以我们不应该允许用户直接写入数组或对象,而是使用 firestore 函数来做这个映射和将数据排列在正确的位置)

请帮帮我...

【问题讨论】:

    标签: google-cloud-firestore firebase-security


    【解决方案1】:

    如果您想在tag1tag 字段中时允许读取文档,您可以这样做:

    match /posts/{postID} {
      allow read: if 'tag1' in resource.data.tag
    }
    

    另见:

    【讨论】:

    • 同样的逻辑也适用于此。如果您想在正在写入的文档中进行验证(而不是在写入之前存在的文档),请使用 request.resource 而不仅仅是 resource
    • 使用可以像 update( {viewers: [1, 2, 3, NaN, null]}, {merge: true} ) 一样更新。如何使用 Firebase 规则限制此用户。请建议。因为firestore也没有for循环......
    • 这会很有帮助,如果你能举例说明......我是firestore的新手......
    • 您能否确认一下,是否可以编写安全规则...所以我会选择其他一些选项...
    • 我的回答显示了如何验证某个标签是否存在。如果这不是您想要的,我不明白您试图验证标签数组的 what
    猜你喜欢
    • 2019-04-18
    • 2019-02-15
    • 2020-01-21
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2019-01-22
    相关资源
    最近更新 更多