如何在Firebase Cloud Functions中删除包含嵌套子节点的子节点?

时间:2018-10-08 22:44:06

标签: javascript node.js firebase firebase-realtime-database google-cloud-functions

事件过期后,我正在使用Firebase Cloud Functions删除子节点,所有值都将被删除,但嵌套子节点不会被删除

问题是什么以及如何解决?

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"   } }

1 个答案:

答案 0 :(得分:0)

我不明白您要达到的目标,到目前为止,如果事件节点已过期,您要删除它。尝试如下

app.once('ready', () => {
  let mainWindow = new BrowserWindow({show: false}) //Create main window
  mainWindow.on('show', () => {
    //Do something
  })
})

如果要删除多个节点(因为fb支持多路径更新或删除),步骤2将很有帮助

正如Doug在您的问题评论中所说,请保持一件事。为什么要下载整个数据来单独删除某些节点。