首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个子节点在Firebase函数中不被删除?

问为什么这个子节点在Firebase函数中不被删除?
EN

Stack Overflow用户
提问于 2018-10-09 17:27:49
回答 1查看 110关注 0票数 3

我试图在事件节点过期后删除它,并删除它的所有子节点删除事件节点的图像。

问题是,当时间流逝,而我删除事件节点时,它的所有子节点都会被移除,除了这个子节点

被删除后事件节点的图像。

源代码

代码语言:javascript
复制
exports.removeOldEvents = functions.https.onRequest((req, res) => {
const eventsRef = admin.database().ref('events')
eventsRef.once('value', (snapshot) => {
    snapshot.forEach((child) => {
        child.forEach((child) => {
            if (1000*Number(child.val()['endDate']) <= new Date().getTime()) {
                child.ref.set(null)
          }
        })
    })
})
return res.status(200).end()
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-09 17:34:54

由于您多次调用set()方法(它返回一个允诺),所以您应该使用Promise.all()来等待所有承诺的解析,然后再发回响应。

以下代码的改编应该可以工作(但是没有测试):

代码语言:javascript
复制
exports.removeOldEvents = functions.https.onRequest((req, res) => {
   const eventsRef = admin.database().ref('events')

   eventsRef.once('value')
   .then((snapshot) => {
      const promises = [];
      snapshot.forEach((child) => {
          child.forEach((child) => {
              if (1000*Number(child.val().endDate) <= new Date().getTime()) {
                  promises.push(child.ref.set(null));
              }
          });
      });
      return Promise.all(promises);
   })
   .then(results => {
      const responseObj = {response: 'success'};
      res.send(responseObj);
   })
   .catch(err => {
      res.status(500).send(err);
   })
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52726393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档