Я пытаюсь сделать следующее. У меня такая база данных
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.info('New client: '+newClient);
console.info('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.info('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.info('New client: '+newClient);
console.info('Turno anterior: '+oldClient);
затем я запрашиваю значения внутри своего клиента, чтобы получить device_token, а затем notificationtrigger, и использую обещание, чтобы получить два значения, сравнивая, идентичны ли они, а затем возвращая уведомление с текущим пользователем device_token
Ошибки, с которыми я сталкиваюсь, - это две
Первый, как мне кажется, из этой строки
const clientNumberTrigger = results[1].val();
и второй, я не знаю, почему происходит, я думаю, что мне нужно добавить условное выражение перед моим условием if
Я начинаю с функций firebase и постепенно изучаю некоторый javascript в процессе.
как говорится в ошибке: вы пытаетесь сравнить два значения, используя один символ равенства (=), тогда как вместо этого вы должны использовать три:
переключить это:
if (clientNumberTrigger = newClient) { ... }
к этому:
if (clientNumberTrigger === newClient) { ... }
и, по крайней мере, эта ошибка должна исчезнуть.
Ой ! Какая ошибка, большое спасибо @frapeti, теперь он развертывается и работает, как задумано!