簡體   English   中英

Firestore 規則 - 更新具有 FieldValue.delete() 的文檔

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM