Я пишу функцию для облачного кода 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.
Любая помощь будет принята с благодарностью. Это для личного некоммерческого проекта и будет использоваться только с несколькими людьми.