Я получаю такую ​​ошибку «TypeError: Невозможно прочитать свойство« data »из undefined at deviceToken.then.result (/srv/index.js:14:33)» в node.js - PullRequest
0 голосов
/ 21 июня 2019

Вот мой код:

    const deviceToken = admin.database().ref(`/users/{sender_user_id}/token_id`).once('value');

    return deviceToken.then(result => {
        const token_id = result.after.data();

        const payload = {
            notification: {
                title: "New message!",
                body: "You have a new message!",
                icon: "default"
            }
        };

        return admin.messaging().sendToDevice(token_id, payload).then(response => {
            return console.log('This was a notification');

        });
    });


});

И я получаю эту ошибку:

TypeError: Невозможно прочитать свойство 'data' undefined at deviceToken.then.result (/srv/index.js:14:33)

Я должен получить идентификатор токена устройства от пользователей.Как мне это сделать?

node --version: v12.4.0 npm --version: 6.9.0

1 Ответ

2 голосов
/ 21 июня 2019

Метод once внутри firebase.database.Reference возвращает Promise<DataSnapshot>. Класс admin.database.DataSnapshot не содержит свойства с именем after. Если вы пытаетесь получить token из базы данных, измените следующее:

    return deviceToken.then(result => {
        const token_id = result.after.data();

в это:

    return deviceToken.then(result => {
        const token_id = result.val();

Из документов:

val

Извлекает значение JavaScript из DataSnapshot.

В зависимости от данных в DataSnapshot метод val() может возвращать скалярный тип (строка, число или логическое значение), массив или объект. Он также может возвратить ноль, указывая, что DataSnapshot пуст (не содержит данных).

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