在社交应用程序中,我有一个云功能,可以在每个帖子被喜欢时更新“赞”计数器,也就是说每当更新以下引用时:
/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,但你必须知道在我的应用程序中,一个用户也可以删除他的'喜欢'。
无法排除特定子项触发函数。
如果您发现需要,通常意味着您已经将应该保持分开的数据类型组合在一起。
例如,我希望您的计数完全在一个单独的节点中,例如/likeCounts/$postId
。如果你这样构造它,更新新的类似的计数将不会重新触发该函数。