Firestore规则-更新具有FieldValue.delete()的文档



我正在寻找允许删除某些文档字段的正确Firestore规则设置。

如果发生以下情况,我需要更新文档:

DocumentReference documentReference = firebaseFirestore.collection("test").document(questionId);
WriteBatch writeBatch = activityMain.firebaseFirestore.batch();
writeBatch
.update(documentReference, "disable", true)
.update(documentReference, "user_id", FieldValue.delete())
.update(documentReference, "user_name", FieldValue.delete());
writeBatch.commit();

用户只能在字段">禁用";设置为trueuser_id";以及">用户名称"被删除。否则拒绝请求。

我已经尝试过了:

allow update: if request.resource.data.disable == true
&& (request.resource.data.size() == resource.data.size() - 2) 
&& request.writeFields.size() == 2
&& request.resource.data.user_id in request.writeFields
&& !(request.data.user_id  in request.resource.data);
&& request.resource.data.user_name in request.writeFields
&& !(request.data.user_name  in request.resource.data);

这种做法行不通。它总是返回false。知道该怎么处理吗?

我能够做到:

allow update: if (request.resource.data.disable == true
&& (request.resource.data.diff(resource.data).removedKeys()
.hasOnly(['user_name', 'user_id'])));

最新更新