我们是否能够在Firestore安全规则中检查文档中的哪个键已更改?然后检查已更改的对象?我试图解决这个问题我遇到了很多麻烦。很难测试。
谢谢Ryann
答案 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"]);