Kar*_*ani 2 firebase firebase-security google-cloud-firestore
我正在从客户端进行批处理操作以仅更新一个字段,但是在进行批处理操作和安全规则测试时发现正在更新多个字段。我使用request.resource.data.size() >1并request.resource.data.keys().size()>1返回true(文档正在更新)检查了这个,但这不是因为我想检查安全规则,只有一个字段正在使用检查更新,request.resource.data.keys().hasOnly(['someFieldToUpdate'])但现在不起作用,以前我记得有writeFields检查但是它现在没有出现在文档中,这个答案也提到了它。那么如何检查现在在批处理操作中实际更新的字段?
您可以在数据映射上使用新的diff()方法。它会告诉您更改了哪些键。这是一个示例:
function isUpdateToOpenField(attr) {
return request.resource.data.diff(resource.data).changedKeys().hasOnly(['open']);
}
allow update: if isUpdateToOpenField(request.resource.data);
Run Code Online (Sandbox Code Playgroud)
改编自这个答案。
| 归档时间: |
|
| 查看次数: |
761 次 |
| 最近记录: |