【发布时间】:2018-10-04 19:12:23
【问题描述】:
我在 Cloud Functions 中有一个结构,我在其中遍历每个子节点,查看其 (endDate) 值是否已超过当前时间,然后删除过期的子节点
子节点的所有子节点都被删除,除了字典子节点“坐标”
为什么它没有与其余部分一起被删除?我该怎么做?
exports.removeOldMessages = functions.https.onRequest((req, res) => {
const messagesRef = admin.database().ref('events')
messagesRef.once('value', (snapshot) => {
snapshot.forEach((child) => {
child.forEach((child) => {
if (Number(child.val()['endDate']) <= new Date().getTime()) {
child.ref.set(null)
}
})
})
})
return res.status(200).end()
})
这是 JSON
{ "events" : { "N5iTuYzAbJa02RauxCl3uh2Nggz1" : {
"-LNmIvSdrwK96KCGcmXm" : {
"addedBy" : "Riyadh Figures",
"coordinate" : [ 24.70914690943994, 46.78851541131735 ],
"endDate" : "1538442801.0",
"imagePath" : "-LNmIvSdrwK96KCGcmXm",
"key" : "-LNmIvSdrwK96KCGcmXm",
"title" : "hjihgf",
"userPicture" : "N5iTuYzAbJa02RauxCl3uh2Nggz1" } }
【问题讨论】:
-
你在这里肯定没有正确使用 Promise。此外,在我看来,您可以只查询要删除的事件(基于 endDate 的值),而不是读取每个事件。这将运行得更快,花费更少。
标签: javascript node.js firebase firebase-realtime-database google-cloud-functions