Firebase云代码中的多个数据查询

时间:2018-10-26 16:34:25

标签: javascript database promise firebase-cloud-messaging google-cloud-functions

我正在编写用于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;

});

我确实收到了一条消息,该消息属于硬编码令牌,但我不知道如何从收件人用户文件夹中提取令牌。在过去的三天里,我一直在尝试很多事情,但是主要的问题似乎是创建一个将令牌返回给主函数的函数,以便可以在有效负载承诺中使用它。

任何帮助将不胜感激。这是用于个人非商业项目,仅可用于少数人。

0 个答案:

没有答案