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

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

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

Что я хочу сделать, это то, что, когда клиент помещает число в мое приложение внутри своего узла "name1", он будет вызывать уведомление, когда clientnumber равен 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 , а затем messagestrigger и использую обещание, чтобы получить два значения, сравнивая, совпадают ли они, и затем возвращая уведомление стекущий пользователь device_token

Я сталкиваюсь с ошибками: эти две

enter image description here

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

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

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

Я запускаю с функциями firebase имедленно изучая некоторый JavaScript в процессе.

1 Ответ

0 голосов
/ 26 октября 2018

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

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

if(clientNumberTrigger = newClient) { ... }

на это:

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

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

...