以下情况:
创建测验应用。每当用户结束测验时,他的分数就会更新。在此更新中,firebase函数将更新所有用户的排名:
exports.onMessageCreate = functions.firestore
.document('users/{userId}')
.onUpdate((change, context) => {
var test= admin.firestore().collection('users');
test.orderBy('totalScore', 'desc').get().then(querySnapshot => {
var rank = 1;
querySnapshot.forEach(user => {
user.ref.set({globalRanking: rank}, {merge: true}).then(res => { });;
rank++;
});
});
return null;
});
问题在于,使用documentSnapshot.ref.set
的用户再次被更新,因此每次完整的firebase功能都将再次触发。如何避免这种情况?
答案 0 :(得分:2)
进行此操作,以便当用户结束测验时,他更新或推送到其他节点。 该功能监视该节点并更新所有用户排名