在firebase云功能触发器上添加例外

问题描述 投票:0回答:1

在社交应用程序中,我有一个云功能,可以在每个帖子被喜欢时更新“赞”计数器,也就是说每当更新以下引用时:

/likes/{postId}/{userid}

'countOfLikes'写在通配符{userId}的相同级别:

exports.countLikeChange = functions.database.ref('/likes/{postId}/{userid}').onWrite(event => {
    const collectionRef = event.data.ref.parent;
    var counterRef = collectionRef.child('countOfLikes');


    return collectionRef.once('value').then(messagesData => counterRef.set(messagesData.numChildren() - 1));
});

使用我当前的代码,当用户喜欢帖子时,首先触发该函数更新countOfLike,然后触发相同的函数执行相同的操作...

有没有办法指定排除,以便{userId} =='countOfLikes'时不会触发该功能?

我知道我可以使用onCreate而不是onWrite,但你必须知道在我的应用程序中,一个用户也可以删除他的'喜欢'。

javascript firebase google-cloud-functions
1个回答
2
投票

无法排除特定子项触发函数。

如果您发现需要,通常意味着您已经将应该保持分开的数据类型组合在一起。

例如,我希望您的计数完全在一个单独的节点中,例如/likeCounts/$postId。如果你这样构造它,更新新的类似的计数将不会重新触发该函数。

© www.soinside.com 2019 - 2024. All rights reserved.