我正在从客户端进行批量操作以仅更新一个字段,但在进行批量操作和安全规则测试时,观察到多个字段正在被更新。我用这个检查了request.resource.data.size() >1
and request.resource.data.keys().size()>1
返回true
(文档正在更新)但这并不是有意的,因为我想检查安全规则,仅使用一个检查更新一个字段,例如request.resource.data.keys().hasOnly(['someFieldToUpdate'])
但这现在不起作用,以前我记得有writeFields
检查这一点,但它现在不存在于文档中,而且this https://stackoverflow.com/a/52192476/4961540答案提到了。那么我如何检查这些字段actually现在正在批量操作中更新吗?
您可以使用新的diff() https://firebase.google.com/docs/reference/rules/rules.Map#diff数据图上的方法。它会告诉您哪些键已更改。这是一个示例:
function isUpdateToOpenField(attr) {
return request.resource.data.diff(resource.data).changedKeys().hasOnly(['open']);
}
allow update: if isUpdateToOpenField(request.resource.data);
改编自这个答案 https://stackoverflow.com/a/60606807/201828.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)