我为Firebase实时数据库触发器部署了一个JS函数。在其操作中,它应该仅在数据库中的值更新时发送推送通知,这很简单:
{
"rollo" : "yes"
}
如果值更改为yes,则应触发通知。如果它变为“否”则它应该什么都不做。这是JS函数:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.sendNewPostNotif = functions.database.ref('/rollo').onUpdate((change, context) => {
console.log('Push notification event triggered');
const beforeData = change.before.val();
const payload = {
notification: {
title: 'Push triggered!',
body: "Push text",
sound: "default"
}
};
const options = {
priority: "high",
timeToLive: 60 * 10 * 1
};
return admin.messaging().sendToTopic("notifications", payload, options);
});
即使我设置了TTL,每个值更改都会发送另一个推送通知。
有什么想法吗?
答案 0 :(得分:2)
我会尝试这样的事情:
exports.sendNewPostNotif = functions.database.ref('/rollo').onWrite((change, context) => {
const newData = change.after.val();
const oldData = change.before.val();
const payload = {
notification: {
title: 'Push triggered!',
body: "Push text",
sound: "default"
}
};
const options = {
priority: "high",
timeToLive: 60 * 10 * 1
};
if (newData != oldData && newData == 'yes') {
return admin.messaging().sendToTopic("notifications", payload, options);
}
});
答案 1 :(得分:1)
onUpdate()
:
在实时数据库中更新数据时触发。
当您将其更新为"否"它会发送通知,当您将其更新为" yes"它还会发送通知。