Firestore FieldValue.increment 的安全规则



我在火堆里有一个计数器,可以计算喜欢。我像这样递增它:

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);

最新更新