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

Posted

技术标签:

【中文标题】如何根据特定时间删除 Firebase 数据库中的项目【英文标题】:How to delete an item in Firebase Database based on specific time 【发布时间】:2019-07-04 20:29:10 【问题描述】:

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

【问题讨论】:

您是要检查一个交换是应该每天只删除一次还是应该每天删除几次? 【参考方案1】:

如果你想每天检查是否有swaps要删除,根据swapperShiftDay字段值,如果是的话,删除它们,你可以写一个HTTPS云函数如下调用它每天通过https://cron-job.org/en/ 之类的在线 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 您好,您有时间评估/尝试我的回答中提出的解决方案吗? 嗨 Renaud,非常感谢您的帮助。我知道我的回复为时已晚,对此我深表歉意,但我遇到了问题,对此我深表歉意。从现在开始的弱者, 我决定学习 javascript 来理解你的代码,我刚刚开始使用 ECMA 6,现在我能够理解你的代码,我已经成功地将它部署到我的函数中,并创建了 cron 计划使用功能链接。我唯一的问题是我试图在我的浏览器中使用 URL 来检查该功能是否工作并打印此错误(ReferenceError: firebase is not definedfailed)。 我不会骗你的,我刚刚学习了语言语法,我不知道为什么它会显示这个错误,现在正在寻找解决它的方法。另外,我没有检查答案,因为我想检查它与我一起工作后我所做的所有步骤。再次感谢您的帮助,我真的很高兴。 你好。通常使用我提供的代码,它应该可以正常工作。可能是部署问题?也许您可以关注这篇入门帖子:firebase.google.com/docs/functions/get-started?authuser=0

以上是关于如何根据特定时间删除 Firebase 数据库中的项目的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 从 UITableViewCell 中删除 Firebase 中的特定子节点

如何从 ListView 中删除 Firebase Android 中的特定节点

如何根据 android 中的用户位置从 Firebase 数据库中检索数据?

如何使用 Firebase RealTime 数据库根据特定类别获取项目集合

Firebase 删除字段中的特定内容

根据特定值查询子节点(Swift 3、Firebase)