我试图在事件节点过期后删除它,并删除它的所有子节点删除事件节点的图像。
问题是,当时间流逝,而我删除事件节点时,它的所有子节点都会被移除,除了这个子节点
源代码
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()
})发布于 2018-10-09 17:34:54
由于您多次调用set()方法(它返回一个允诺),所以您应该使用Promise.all()来等待所有承诺的解析,然后再发回响应。
以下代码的改编应该可以工作(但是没有测试):
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);
})
});https://stackoverflow.com/questions/52726393
复制相似问题