javascript - 如何使用 firebase 云函数查询数据库

标签 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)); 
});

最佳答案

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

例如,触发添加到第一个 child 的所有新读数:

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 )。相反,您必须监听 /sensor/ 上的所有 onUpdate 事件,检查更新是否正在添加读数,然后检查值并发送您的电子邮件。

直接从添加读数的地方调用云函数可能更容易,这取决于 /sensor/ 路径因其他原因将被更新多少次(因为每次发生这种情况,这是一种资源浪费)。

关于javascript - 如何使用 firebase 云函数查询数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53638038/

相关文章:

mysql - 当一条路由当前正在向数据库插入大量数据时,如何使所有其他路由正常工作?

node.js - 如何将一个 Mongoose 模式导入到另一个模式?

javascript - 如何设置连接多方上传文件的名称?

swift - Firebase 'setValue' 函数重复且不停止 Swift

node.js - 以编程方式从 admin SDK 获取 firebase 函数 url

javascript - 电子邮件验证 Javascript 正则表达式

javascript - knex 仅在用户名不存在时添加用户名

Javascript替换方法,替换为 "$1"

firebase - 在哪里以及如何正确使用 Firebase 的 enablePersistence() 方法以离线使用网络应用程序?

javascript - object.innerHTML 未正确更新?