我在火堆里有一个计数器,可以计算喜欢。我像这样递增它:
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 安全规则,以便该规则只允许递增而不允许递减?
如果你想强制增加 1:
allow update: if request.resource.data.likes == resource.data.likes + 1;
您可以使用如下所示的安全规则确保新值大于以前的值:
allow update: if request.resource.data.likes > resource.data.likes;
顺便说一句,请注意,字段值没有decrement()
方法。如果要递减,则需要使用负数:
const decrement = firebase.firestore.FieldValue.increment(-1);