java - 如何根据特定时间删除 Firebase 数据库中的项目

标签 java android firebase firebase-realtime-database google-cloud-functions

我正在用 Java 创建一个 Android 应用程序,该应用程序允许用户创建交换请求,当其 swapShiftdate 到达其日期时,我希望将其从实时数据库中删除。这样我就可以不断地释放数据库。 假设用户在周一创建了交换,而现实生活中的交换日期是周四。当星期四到来时,交换应该从数据库中删除,这样它就不会再出现在用户面前。我想要一种方法来帮助我根据屏幕截图中显示的他们选择的日期删除它们。

enter image description here

最佳答案

如果您想根据 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/

相关文章:

javascript - 如何从数组中仅获取一个元素(firebase数据库,nodejs)

android - Cordova-Plugin-Firebase 当应用程序从 OFF 变为 ACTIVE 时,onNotificationOpen() 在 Android 上不起作用

java - 在配置单元中创建表异常?

java - 适配器 onCreateViewHolder 和 onBindViewHolder 方法在 RecyclerView 中没有被调用?

java - 将几个字节数组复制到一个大字节数组

android - 检查Android上是否显示电池电量

android - ListView - 所选项目未按预期工作

ios - Swift 4 : UITableViewCell does will not display data upon initial load, 但会在第二次加载时加载

java - Intellij maven模块继承

java - 卡夫卡 0.8.2 消费者