阵列操作的Cloud Firestore安全规则

时间:2019-01-05 11:42:41

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

我试图将对Firestore的某些操作限制为创建或附加到数组。我应该怎么做?如何区分arrayUnion()arrayDelete()?将数组操作与所有其他操作区分开来怎么办?

更新:到目前为止,从我深入研究Firestore API所获得的信息来看,我猜测类似allow create, FieldValue.arrayUnion: if true的东西可能会起作用,但我尚未对其进行测试,在我测试时会更新。

1 个答案:

答案 0 :(得分:1)

如果要确保对文档的任何更新都不会从数组中删除现有值,请寻找hasAll

allow update: if request.resource.data.arrayField.hasAll(resource.data.arrayField);

我刚刚在模拟器中对此进行了快速测试。更新具有arrayField: ["value1", "value2"]的文档,我:

  • 写入arrayField: ["value1"]时失败
  • 写入arrayField: ["value1", "value2"]时成功
  • 写入arrayField: ["value1", "value2", "value3"]时成功