gpt4 book ai didi

firebase - 当存储在firestore数据库中的日期是今天的日期时如何触发功能?

转载 作者:行者123 更新时间:2023-12-03 23:13:55 26 4
gpt4 key购买 nike

我正在创建一个应用程序,当今天的日期与数据库中存储的日期匹配时,我需要发送推送通知以发送推送通知。
如何实现这一目标?

最佳答案

更新:
您可以使用 scheduled Cloud Function ,而不是编写通过 n 在线 CRON Job 服务调用的 HTTPS Cloud Function。 Cloud Function 代码保持完全相同,只是触发器发生了变化。
在编写初始 anwser 时,预定的云功能不可用。

在不知道您的数据模型的情况下,很难给出准确的答案,但让我们想象一下,为了简化,您在每个文档中存储一个名为 notifDate 的字段。格式为 DDMMYYY 并且这些文档存储在名为 notificationTriggers 的集合中.
您可以按如下方式编写 HTTPS 云函数:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

const cors = require('cors')({ origin: true });
const moment = require('moment');

admin.initializeApp();

exports.sendDailyNotifications = functions.https.onRequest((request, response) => {

cors(request, response, () => {

const now = moment();
const dateFormatted = now.format('DDMMYYYY');

admin.firestore()
.collection("notificationTriggers").where("notifDate", "==", dateFormatted)
.get()
.then(function(querySnapshot) {

const promises = [];

querySnapshot.forEach(doc => {

const tokenId = doc.data().tokenId; //Assumption: the tokenId is in the doc
const notificationContent = {
notification: {
title: "...",
body: "...", //maybe use some data from the doc, e.g doc.data().notificationContent
icon: "default",
sound : "default"
}
};

promises
.push(admin.messaging().sendToDevice(tokenId, notificationContent));

});
return Promise.all(promises);
})
.then(results => {
response.send(data)
})
.catch(error => {
console.log(error)
response.status(500).send(error)
});

});

});
然后,您将每天使用在线 CRON 作业服务(如 https://cron-job.org/en/)调用此云函数。 .
有关如何在 Cloud Functions 中发送通知的更多示例,请查看这些 SO 答案 Sending push notification using cloud function when a new node is added in firebase realtime database? , node.js firebase deploy errorFirebase: Cloud Firestore trigger not working for FCM .
如果您不熟悉在 Cloud Functions 中使用 Promises,我建议您观看 Firebase 视频系列中关于“JavaScript Promises”的 3 个视频: https://firebase.google.com/docs/functions/video-series/
您会注意到 Promise.all() 的使用在上面的代码中,由于您正在并行执行多个异步任务( sendToDevice() 方法)。这在上面提到的第三个视频中有详细说明。

关于firebase - 当存储在firestore数据库中的日期是今天的日期时如何触发功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54323163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com