我正在用Java创建一个Android应用程序,该应用程序允许用户创建交换请求,当我的swapShiftdate到达日期时,我想从实时数据库中删除该请求。这样我就可以不断释放数据库。 假设用户在周一创建了掉期,而掉期的日期是现实生活中的星期四。应该在星期四到来时从数据库中删除掉交换,这样用户就不会再看到它了。我希望有一种方法可以帮助我根据屏幕快照中显示的日期将其删除。
答案 0 :(得分:1)
如果您想根据swaps
字段值每天检查是否有swapperShiftDay
个要删除的内容,如果是这种情况,请删除它们,您可以编写一个HTTPS Cloud Function作为跟随并每天通过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()];
}