FieldValue.increment的Firestore安全规则

时间:2020-06-05 12:17:46

标签: firebase google-cloud-firestore firebase-security

我在Firestore中有一个喜欢的柜台。然后像this一样递增:

const db = firebase.firestore();
const increment = firebase.firestore.FieldValue.increment(1);

// Document reference
const doc = db.collection('coll').doc('doc');

// Update read count
doc.update({ likes: increment });

因此,如果有人编辑源并将increment替换为decrement,它将以这种方式工作。我想防止这种情况。

如何为此编写一个firestore-security规则,以便该规则仅允许递增而不能递减?

2 个答案:

答案 0 :(得分:5)

如果要强制以1为增量,则

allow update: if request.resource.data.likes == resource.data.likes + 1;

答案 1 :(得分:4)

您可以使用Security Rule来确保新值大于先前的值,如下所示:

allow update: if request.resource.data.likes > resource.data.likes;

顺便说一句,请注意FieldValue没有decrement()方法。如果要递减,则需要使用负数:

const decrement = firebase.firestore.FieldValue.increment(-1);