Несколько запросов данных в облачном коде Firebase - PullRequest
0 голосов
/ 26 октября 2018

Я пишу функцию для облачного кода Firebase, который срабатывает при создании сообщения.

Моя настройка такая

root----messages-----pushId-----text
                                recipient
                                etc

root----users--------userId-----email
                                Token
                                etc

Когда сообщение создано, я хочу прочитать значение получателя (которое является адресом электронной почты) из вновь созданного сообщения. Для этого письма я хочу получить токен fcm из базы данных пользователей. Как только это будет сделано, я хочу использовать данные в сообщении и отправить их на токен, который я извлек.

Пока это все, что у меня есть:

exports.sendNotification = functions.database.ref('/messages/{pushId}/').onCreate((change, context) => {
const tokens = 'FIXED_TOKEN_FOR_TESTING';

const pushId = context.params.pushId;


var payloadPromise = admin.database().ref(`/messages/${pushId}`).once('value').then(snapshot => {

        const recipient = snapshot.val().recipient;

        console.log('recipient', recipient);


        if (snapshot.exists) {
            var payload = {
                data: {

                    title: 'My title',
                    message: `'${recipient}'`,
                },
            }

            console.log('Payload on return:', payload);

        } else {
            throw new Error("payload doesn't exist")
        }
return admin.messaging().sendToDevice(tokens, payload)

    })
    .catch(error => {
        console.log('error', error);
    })


return 0;

});

Я получаю сообщение, отправленное на устройство, которое принадлежит жестко закодированному токену, но я понятия не имею, как мне извлечь токен из папки пользователя получателей. За последние 3 дня я пробовал множество вещей, но главная проблема, похоже, заключается в создании функции, которая возвращает токен основной функции, чтобы я мог использовать его в payloadpromise.

Любая помощь будет принята с благодарностью. Это для личного некоммерческого проекта и будет использоваться только с несколькими людьми.

...