![](/img/trans.png)
[英]Access Firebase Child Node in Node.js - Firebase Cloud Functions
[英]How to delete a child node including nested child nodes in Firebase 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" } }
我不明白您要達到的目的,到目前為止,如果事件節點已過期,您要刪除它。 嘗試如下
var deleteObj ={}
messagesRef.once('value', (snapshot) => {
snapshot.forEach((childSnap) => {
childSnap.forEach((innerChild) => {
if (Number(innerChild.val()['endDate']) <= new Date().getTime()) {
// you can do this in two ways
// step 1: Direct Deleting
admin.database().ref('/events/' + childSnap.key + '/' + innerChild.key).set({});
// step 2: Pass into Object
deleteObj['/events/' + childSnap.key + '/' + innerChild.key] = null;
// As you asked for deleting coordinate
deleteObj['/events/' + childSnap.key + '/' + innerChild.key +'/' + 'coordinate'] = [] or {}; // this will do
}
})
})
})
if(deleteObj) // Step 2
admin.database().ref().update(deleteObj).then(function(){
// console.log("Deleted");
})
如果您要刪除多個節點,則步驟2將很有幫助,因為fb支持多路徑更新或刪除
如Doug在您的問題評論中所說,請保留一件事。 為什么要下載整個數據來單獨刪除某些節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.