如何使用 firebase 云功能在特定日期删除 firebase DB 数据
how to use firebase cloud function to delete firebase DB data on specific date
我正在制作一个应用程序,但在特定日期使用云功能删除 firebase 数据库时遇到问题。
这就是我存储数据的方式,我想在 nextDonationDate 删除这个节点,我搜索了很多,发现这可以用云功能来完成,但我不知道如何做和访问这个,因为日期是保存在用户的 UserID 下,因此面临为此进行参考的问题,我该如何解决我的问题以在 nextDonationDate 上执行执行?谢谢:)
Firebase 在 Youtube 上有一个教程,其中展示了如何为云函数触发器安排 Cron 作业。
https://www.youtube.com/watch?v=CbE2PzvAMxA
您可以定期使用此 Cron 运行,这将对您的函数执行 HTTP 调用。在这里您可以遍历所有节点并根据您的逻辑检查 nextDonationDate 并删除符合您条件的节点。
您可以根据您的要求进行优化,这是一种粗略的方法,因为我不完全知道您需要做什么以及为什么需要做某事。
云函数代码可能是这样的:
exports.deleteByDate = functions.https.onRequest((req, res) => {
//url example
// deletebydate?date=Oct 28, 2017
var targetDate = req.query.date;
var db = admin.database();
var donorDbRef = db.ref('Blood_donors_last_donation_date');
var updateVal = {};
donorDbRef
.orderByChild('nextDonationDate')
.equalTo(targetDate)
.once('value')
.then( snapshot => {
snapshot.forEach(childSnapshot => {
updateVal[childSnapshot.key] = null
});
donorDbRef.update(updateVal, (error)=>{
if(!error)
res.status(200).send('succeed deleting data!');
else
res.status(200).send('failed deleting data!');
});
});
});
我正在制作一个应用程序,但在特定日期使用云功能删除 firebase 数据库时遇到问题。
这就是我存储数据的方式,我想在 nextDonationDate 删除这个节点,我搜索了很多,发现这可以用云功能来完成,但我不知道如何做和访问这个,因为日期是保存在用户的 UserID 下,因此面临为此进行参考的问题,我该如何解决我的问题以在 nextDonationDate 上执行执行?谢谢:)
Firebase 在 Youtube 上有一个教程,其中展示了如何为云函数触发器安排 Cron 作业。
https://www.youtube.com/watch?v=CbE2PzvAMxA
您可以定期使用此 Cron 运行,这将对您的函数执行 HTTP 调用。在这里您可以遍历所有节点并根据您的逻辑检查 nextDonationDate 并删除符合您条件的节点。
您可以根据您的要求进行优化,这是一种粗略的方法,因为我不完全知道您需要做什么以及为什么需要做某事。
云函数代码可能是这样的:
exports.deleteByDate = functions.https.onRequest((req, res) => {
//url example
// deletebydate?date=Oct 28, 2017
var targetDate = req.query.date;
var db = admin.database();
var donorDbRef = db.ref('Blood_donors_last_donation_date');
var updateVal = {};
donorDbRef
.orderByChild('nextDonationDate')
.equalTo(targetDate)
.once('value')
.then( snapshot => {
snapshot.forEach(childSnapshot => {
updateVal[childSnapshot.key] = null
});
donorDbRef.update(updateVal, (error)=>{
if(!error)
res.status(200).send('succeed deleting data!');
else
res.status(200).send('failed deleting data!');
});
});
});