我在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规则,以便该规则仅允许递增而不能递减?
答案 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);