代码之家  ›  专栏  ›  技术社区  ›  Alexa289

如何允许访问,即使文档字段在firestore安全规则中不可用?

  •  0
  • Alexa289  · 技术社区  · 5 年前

    所以我在用户文档中添加了一个名为 numberOfFollowers ,因此全新用户将拥有此字段,但旧用户没有此字段 追随者数量 现场。

    在安全规则中,我想设置 追随者数量 应该是一个数字。如果老用户没有这个字段,那么它仍然允许更新他们的文档。

    所以我制定了这样的安全规则

    match /users/{userID} {
    
          allow update: if isValidUserStructure(request.resource.data)
    
        }
    
      function isValidUserStructure(user) {
            return (user.numberOfFollowers is number || user.numberOfFollowers == null)
                 && user.banned is bool
                 && user.contactNumber is string
                 && user.createdAt is timestamp
                 && user.domicile is string
                 && user.email is string
      }
    

    但对于没有此字段的旧用户,访问总是被拒绝,因为这行 (user.numberOfFollowers is number || user.numberOfFollowers == null)

    1 回复  |  直到 5 年前
        1
  •  0
  •   Doug Stevenson    5 年前

    Map 使用文档化的 in 检查是否存在密钥的操作:

    function isFieldPresent(data, fieldName) {
        return fieldName in data;
    }
    

    你可以选择在这种情况下做什么。

    由于NULL是FixSt店中的有效字段值,所以检查NULL就像您现在所做的一样,绝对不是检查不存在的问题。