UnhandledPromiseRejectionWarning: необработанное отклонение обещания (идентификатор отклонения: 1): ReferenceError: registrationTokens не определен - PullRequest
0 голосов
/ 10 апреля 2019

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

exports.getUsers = functions.https.onRequest(async (req, res) => {
    db.collection("users")
        .get()
        .then(snapshot => {
            let registrationTokens = [];
            snapshot.forEach(doc => {
                let id = doc.id;

                registrationTokens.push(id);
            });
        });

    console.log(registrationTokens);

    const message = {
        data: { title: "Testing", body: "Test" },
        tokens: registrationTokens
    };

    messaging.sendMulticast(message).then(response => {
        console.log(response.successCount + " messages were sent successfully");
    });
});

1 Ответ

1 голос
/ 10 апреля 2019

Вы объявили регистрационные токены внутри обещания, поэтому за его пределами не видно:

exports.getUsers = functions.https.onRequest(async (req, res) => {

    db.collection("users")
            .get()
            .then(snapshot => {
                 let registrationTokens = [];  
                 snapshot.forEach(doc => {
                    let id = doc.id;

                    registrationTokens.push(id);
                });
                console.log(registrationTokens);

               // process the tokens
               const message = {
                 data: { title: "Testing", body: "Test" },
                 tokens: registrationTokens
               };

               messaging.sendMulticast(message).then(response => {
                   console.log(response.successCount + " messages were sent successfully");
              });


        });
    });

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

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