Firestore 安全规则中的更新字段数

Kar*_*ani 2 firebase firebase-security google-cloud-firestore

我正在从客户端进行批处理操作以仅更新一个字段,但是在进行批处理操作和安全规则测试时发现正在更新多个字段。我使用request.resource.data.size() >1request.resource.data.keys().size()>1返回true(文档正在更新)检查了这个,但这不是因为我想检查安全规则,只有一个字段正在使用检查更新,request.resource.data.keys().hasOnly(['someFieldToUpdate'])但现在不起作用,以前我记得有writeFields检查但是它现在没有出现在文档中,这个答案也提到了它。那么如何检查现在在批处理操作中实际更新的字段?

pha*_*ann 8

您可以在数据映射上使用新的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)

改编自这个答案