我正在用 Java 创建一个 Android 应用程序,该应用程序允许用户创建交换请求,当其 swapShiftdate 到达其日期时,我希望将其从实时数据库中删除。这样我就可以不断地释放数据库。 假设用户在周一创建了交换,而现实生活中的交换日期是周四。当星期四到来时,交换应该从数据库中删除,这样它就不会再出现在用户面前。我想要一种方法来帮助我根据屏幕截图中显示的他们选择的日期删除它们。
最佳答案
如果您想根据 swapperShiftDay
字段值每天检查是否有掉期
需要删除,如果有则删除它们,您可以编写一个 HTTPS 云函数,如下所示,并每天通过在线 cron 作业调用它,例如 https://cron-job.org/en/
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()];
}
关于java - 如何根据特定时间删除 Firebase 数据库中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54628969/