如何使用Firebase云功能查询数据库

时间:2018-12-05 17:50:39

标签: javascript node.js firebase nosql google-cloud-firestore

我正在尝试使用云功能查询我的Firestore数据库。 每当数据库中的新读数低于10时,我都想触发电子邮件通知。

以下是相关的数据库结构供参考:database structure。 “读数”字段是一个数组,每个“读数”都是一个映射,其中包含“日期”和“值”字段。

当前,我可以在每次创建新用户时发送电子邮件通知,但是我希望这对数据库有效。我不确定如何查询“读数”数组,然后查询每个单独的读数。

到目前为止,这是我的代码,该代码会在创建新用户时发送电子邮件

exports.sendNotification = functions.auth.user().onCreate((user) => {


const mailOptions = {
    from: '"Spammy Corp." <noreply@firebase.com>',
    to:"fakeEmail@btopenworld.com",
    text: "TEST"
};

return mailTransport.sendMail(mailOptions)
    .then(() => console.log("It worked"))
    .catch((error) => 
console.error('There was an error while sending the email:', error)); 
});

1 个答案:

答案 0 :(得分:2)

请参阅:https://firebase.google.com/docs/firestore/extend-with-functions

例如,激发添加到第一个孩子的所有新读数:

exports.sendEmail = functions.firestore
    .document('sensor/UGt.../readings')
    .onCreate((snap, context) => {
        const newValue = snap.data();
        const value = newValue.value;
        if (value < 10) {
            // send email
        }
    });

在进一步的评论中,您提到了在所有传感器元素中聆听新的读数,而不仅仅是您的第一个。不幸的是,这不可能以有效/简单的方式(source)。相反,您将不得不收听onUpdate上的所有/sensor/事件,检查更新是否添加了读数,然后检查值并发送电子邮件。

根据添加/sensor/路径由于其他原因要更新多少次,可能更容易从添加读数的任何地方直接调用云函数(因为每次发生这种情况都是浪费时间资源)。