Firestore安全规则检查文档密钥更改

时间:2018-01-06 07:07:14

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

我们是否能够在Firestore安全规则中检查文档中的哪个键已更改?然后检查已更改的对象?我试图解决这个问题我遇到了很多麻烦。很难测试。

谢谢Ryann

2 个答案:

答案 0 :(得分:2)

注意:我了解到,在所有情况下都没有填充writeFields与控制台中的规则模拟器不兼容。这不包括allow create的情况。我不再推荐这个答案了。

request.writeFields包含请求中更改的字段的键列表。 request.resource.data包含请求中的值,resource.data包含当前值。例如:

// Allow an update if only the name field is changing and
// only if it's not equal to the current last_name field

allow update: if request.writeFields.size() == 1
             && 'name' in request.writeFields
             && request.resource.data.name != resource.data.last_name;

答案 1 :(得分:0)

通过“规则”检查文档中哪些字段已更改的新规范方法是将其与现有文档进行区分:

request.resource.data.diff(resource.data).affectedKeys().hasAll(["a", "b", "c"]);