[英]Swift: How to use FieldValue.serverTimestamp() in document().setData() Firestore database?
[英]Firestore Rules - Update document that has 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();
只有當“ disable ”字段設置為true時,用戶才能更新文檔,並且“ user_id ”和“ user_name ”字段被刪除。 否則拒絕請求。
我已經嘗試過這個:
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);
這種方法行不通。 它總是返回假。 知道如何處理嗎?
我能夠做到:
allow update: if (request.resource.data.disable == true
&& (request.resource.data.diff(resource.data).removedKeys()
.hasOnly(['user_name', 'user_id'])));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.