Функция Firebase пытается отправить уведомление не удается

1

Я пытаюсь сделать следующее. У меня есть моя база данных

clients
|___clientnumber: 4
|___name1
    |_device_token: kJ-aguwn7sSHsjKSL....
    |_notificationtrigger: 8

Что я хочу сделать, так это то, что когда клиент помещает номер в мое приложение внутри своего узла "имя1", он вызывает уведомление, когда номер клиента равен 8, поэтому число клиентов будет 4, затем 5, затем 6 и так далее до 8, когда он достигает 8, я написал эту функцию, чтобы отправить пользователю уведомление о том, что клиентский номер 8 готов.

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.sendClientesNotification = functions.database.ref('/clients/clientnumber')
    .onWrite((snapshot, context) => {

        const newClient = snapshot.after.val();
        const oldClient = snapshot.before.val();
        console.log('New client: '+newClient);
        console.log('Old client: '+oldClient);

            // get the user device token
      const getDeviceTokensPromise = admin.database()
      .ref('/clients/name1/device_token').once('value');

      const getClientNotificationTrigger = admin.database()
      .ref('/clients/name1/notificationtrigger').once('value');


      //I use a promise to get the values above and return, and then I create the notification
      return Promise.all([getDeviceTokensPromise, getClientNotificationTrigger]).then(results => {

        const devicetoken = results[0].val();
        const clientNumberTrigger = results[1].val();

        console.log('New notification for '+devicetoken+' for the number '+clientNumberTrigger);

        if(clientNumberTrigger = newClient){
            const payload = {
                notification: {
                    title: "Alert",
                    body: "alert triggered",
                    icon: "default",
                    sound:"default",
                    vibrate:"true"
                }
            };
        }

        return admin.messaging().sendToDevice(devicetoken, payload);

      });

    });

Теперь я объясню, что я делаю прямо здесь.

Сначала я указываю на ссылочный номер клиента и успешно получаю значение до и после его изменения здесь

 const newClient = snapshot.after.val();
            const oldClient = snapshot.before.val();
            console.log('New client: '+newClient);
            console.log('Turno anterior: '+oldClient);

то я запрашиваю значения внутри моего клиента, чтобы иметь device_token, а затем уведомлять об ошибках и использовать обещание получить два значения, сравнивая, если они идентичны, а затем возвращает уведомление с текущим пользователем device_token

Ошибки, с которыми я столкнулся, - это два

Изображение 174551

Первое, что я думаю из этой строки

const clientNumberTrigger = results[1].val();

и второй, я не знаю, почему это происходит, я думаю, что мне нужно добавить условное выражение перед тем,

Я запускаю функции firebase и медленно изучаю javascript в этом процессе.

Теги:
firebase
google-cloud-functions

1 ответ

2
Лучший ответ

как говорится в ошибке: вы пытаетесь сравнить два значения с помощью единственного символа равенства (=), в то время как вместо этого вы должны использовать три:

переключите это:

if(clientNumberTrigger = newClient) { ... }

к этому:

if(clientNumberTrigger === newClient) { ... }

и по крайней мере эта ошибка должна исчезнуть.

  • 0
    Ой ! какая ошибка, спасибо большое @frapeti, теперь он разворачивается и работает как задумано!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню