javascript - 如何在 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 支持多路径更新或删除
正如道格在您的问题评论中所说,保留一件事。为什么你要下载整个数据来单独删除一些节点。
推荐阅读
- html - CSS Grid:是否可以通过针对动态创建的特定网格项来更改 z-index?
- vue.js - 如何正确(语法)编写这一行 Vue
- mysql - 有没有办法使用 2 列来唯一标识 MYSQL 中的一行?
- c# - ASP.NET Core:在控制器类中使用“DisplayFor”方法来检索本地化的枚举显示属性
- c# - 尝试创建多值列表会导致错误
- java - Mockito When...Then Return - 返回被忽略?
- wordpress - 如何在wordpress帖子中显示与作者姓名和日期内联的自定义内容?
- ios - FIRAnalyticsConnector.framework/FIRAnalyticsConnector' 用于 Mac Catalyst 的架构 x86_64 构建
- php - 如何使用 mongodb 和 PHP 从“system.users”中删除用户?
- aurelia - 确定是否在提示中作为对话框打开