Функция базы данных в реальном времени постоянно срабатывает - PullRequest
0 голосов
/ 12 июня 2018

Я развернул функцию JS для триггеров базы данных Firebase в реальном времени.В своих операциях он должен отправлять push-уведомление только при обновлении значения в базе данных, что очень просто:

{
 "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, каждое изменение значения отправляет другое push-уведомление.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Я бы попробовал что-то вроде этого:

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);
  }
});
0 голосов
/ 12 июня 2018

onUpdate():

срабатывает при обновлении данных в базе данных реального времени.

Когда вы обновите его до «нет», оно отправит уведомление, а когдаВы обновите его до «да», оно также отправит уведомление.

https://firebase.google.com/docs/functions/database-events

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...