如何在Firestore安全规则中将集合转换为列表?

时间:2020-03-21 23:22:34

标签: google-cloud-firestore firebase-security

我需要从返回的一组物品中获取一个物品

resource.data.diff(request.data).changedKeys()

那么,是否有办法从集合中获取项目,或将集合变成列表以获取项目?

我不需要比较任何值,所以我不需要hasOnly()或任何相关函数,我需要以任何方式获取集合中的一个值吗?

2 个答案:

答案 0 :(得分:1)

您可以使用Set进行操作的完整列表在链接的API文档中。与List相同。

如您所见,Set没有可用的元素访问器。您所能做的就是检查大小和存在,并操纵内容。

对于列表,您必须知道元素的索引才能获取内容。如果您不知道索引,则无法访问它。

这两个集合都没有提供“获取任意,未命名,未编制索引的项目”的功能。

答案 1 :(得分:1)

我向Firebase支持方提出了要求,以便在Set添加到API后立即访问Set的值。还在等待...

我使用的解决方法是request.writeFields,其中包含为给定的创建/更新写入的所有字段。

注意:

  • request.writeFields已过时,可能会被删除(我认为在没有其他可用的工作方法时疯狂)

  • 对于嵌套字段,它将为您提供每个字段的完整路径 例如,如果您更新文档中的以下字段:

    {
      A              // UPDATED
      B: {
       BA
       BB            // UPDATED
      }
      C: {
        CA: {
          CAA        // UPDATED
        }
        CB
      }
    }
    

=> request.writeFields = ['A', 'A.BB', 'C.CA.CAA']

相关问题