我正在尝试使用云功能查询我的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)); });
答案 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/
路径由于其他原因要更新多少次,可能更容易从添加读数的任何地方直接调用云函数(因为每次发生这种情况都是浪费时间资源)。