我正在编写用于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;
});
我确实收到了一条消息,该消息属于硬编码令牌,但我不知道如何从收件人用户文件夹中提取令牌。在过去的三天里,我一直在尝试很多事情,但是主要的问题似乎是创建一个将令牌返回给主函数的函数,以便可以在有效负载承诺中使用它。
任何帮助将不胜感激。这是用于个人非商业项目,仅可用于少数人。