我已经挣扎了很长时间,我真的不知道为什么会发生这种情况。
我正在使用云功能来发送状态变化的通知基础。这是我的代码:
exports.sample = functions.database.ref('users/{pushID}/status').onUpdate(Snap => {
const key = Snap.params.pushID;
var ref = admin.database().ref('users');
return ref.child(`${key}`).on("value", function(snap) {
const category = snap.child('category').val();
console.log("category",category);
var ref = admin.database().ref('/categories/')
return ref.child(`${category}`).on("value", function(snapshot){
const tokenID = snapshot.child('tokenID').val();
const payload = {
data: {
title: 'HELLO',
text: `HOW ARE YOU ?`
}
};
return admin.messaging().sendToDevice(tokenID, payload);
})
});
部署功能后,我使用仪表板更改状态。
当我这样做时,我会收到通知!(我在日志上获得"发送")但是,当我再次更改"状态"时,我会收到两个通知!现在我在日志上有两次"发送"。
这似乎是一个循环,但我不明白为什么,无论我记录什么,我只会得到一个值,我没有得到多个令牌或任何东西,它只是向同一用户发送相同的通知。
每当我重新删除功能时,"计数器"重置,然后第一个更改仅发送一个通知。
我的数据库看起来像这样:
users
-->push id
---->status=""
---->category="test"
categories
-->test
应使用一度()而不是()附加您的听众。on()
留下了侦听器。