Java 如何根据特定时间删除Firebase数据库中的项目
我正在用Java创建一个Android应用程序,允许用户创建交换请求,我希望在交换日期达到其日期时将其从实时数据库中删除。所以我可以不断地释放数据库。 假设用户在周一创建了交换,而在现实生活中交换日期是周四。当周四到来时,交换应该从数据库中删除,这样用户就不会再看到它了。我想要一种方法,帮助我删除他们的基础上的日期,他们已经选择作为其显示在屏幕截图Java 如何根据特定时间删除Firebase数据库中的项目,java,android,firebase,firebase-realtime-database,google-cloud-functions,Java,Android,Firebase,Firebase Realtime Database,Google Cloud Functions,我正在用Java创建一个Android应用程序,允许用户创建交换请求,我希望在交换日期达到其日期时将其从实时数据库中删除。所以我可以不断地释放数据库。 假设用户在周一创建了交换,而在现实生活中交换日期是周四。当周四到来时,交换应该从数据库中删除,这样用户就不会再看到它了。我想要一种方法,帮助我删除他们的基础上的日期,他们已经选择作为其显示在屏幕截图 如果您想每天根据swapperShiftDay字段值检查是否有要删除的交换,如果是这样,请删除它们,您可以编写一个HTTPS云函数,如下所示,并每天
如果您想每天根据swapperShiftDay字段值检查是否有要删除的交换,如果是这样,请删除它们,您可以编写一个HTTPS云函数,如下所示,并每天通过在线cron作业调用它,如 HTTPS云函数看起来像:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.deleteSwaps = functions
.https.onRequest((req, res) => {
const dbRef = admin.database().ref('swaps/shift_swaps').orderByChild("swapperShiftDay").equalTo(getTodayDateString());
dbRef.once('value')
.then(snapshot => {
var updates = {};
snapshot.forEach(childSnapshot => {
key = childSnapshot.key;
updates['swaps/shift_swaps/' + key] = null;
});
return firebase.database().ref().update(updates);
})
.then(() => {
res.send({ msg: 'Success' });
})
.catch(err => {
res.status(500).send({Error: err});
});
});
function getTodayDateString() {
var d = new Date();
var weekday = new Array(7);
weekday[0] = "Sunday";
weekday[1] = "Monday";
weekday[2] = "Tuesday";
weekday[3] = "Wednesday";
weekday[4] = "Thursday";
weekday[5] = "Friday";
weekday[6] = "Saturday";
return weekday[d.getDay()];
}
您是否要检查掉期是否应该每天删除一次或几次?@Ahmed Rabee您好,您是否有时间评估/尝试我回答中提出的解决方案?嗨,雷诺,我非常感谢您的帮助。我知道我的反应太晚了,对此我很抱歉,但我有我的问题,我为此道歉。从现在开始,我决定学习JavaScript来理解您的代码,我刚刚开始学习ECMA 6,现在我能够理解您的代码,我已经成功地将其部署到我的函数中,并使用函数链接为其创建了cron计划。我唯一的问题是,我试图在浏览器中使用URL来检查函数是否工作,它会打印此错误参考错误:firebase未定义失败。我不会骗你我刚刚学习了语言语法,我不知道为什么它会显示此错误,现在正在寻找解决方法。此外,我没有检查答案,因为我想检查它的所有步骤,我已经完成后,它与我的作品。再次感谢你的帮助,我真的很高兴。你好。通常我提供的代码应该可以正常工作。可能是部署问题?也许您可以关注以下入门帖子: