Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在子对象中存储父属性以增强嵌套Javascript数组中的更新操作_Javascript_Node.js_Express_Mongoose - Fatal编程技术网

在子对象中存储父属性以增强嵌套Javascript数组中的更新操作

在子对象中存储父属性以增强嵌套Javascript数组中的更新操作,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,我的Express中有以下数组 [ { “displayName”:“1级文件夹”, “路由”:“文件夹\u处于\u级别\u 1” }, { “displayName”:“第1级的另一个文件夹”, “路由”:“第1级的另一个文件夹”, “儿童”: [ { “displayName”:“Level2”, “路由”:“第1级/第2级的另一个文件夹”, “儿童”: [ { “displayName”:“Level3”, “路由”:“另一个文件夹位于\u级别\u 1/level2/level3”, “儿

我的Express中有以下数组

[
{
“displayName”:“1级文件夹”,
“路由”:“文件夹\u处于\u级别\u 1”
},
{
“displayName”:“第1级的另一个文件夹”,
“路由”:“第1级的另一个文件夹”,
“儿童”:
[
{
“displayName”:“Level2”,
“路由”:“第1级/第2级的另一个文件夹”,
“儿童”:
[
{
“displayName”:“Level3”,
“路由”:“另一个文件夹位于\u级别\u 1/level2/level3”,
“儿童”:
[
{
“displayName”:“最后一级的文件”,
“路由”:“另一个文件夹位于\u级别\u 1/level2/level3/文件位于\u最后一个\u级别”
},
]
},
]
},
]
},
]
问题是,当我收到更新/编辑请求时,
名称
路由
需要更新,我发现此阵列架构存在缺陷。假设我需要更新,
第1级的另一个文件夹
,那么我也需要更新它的所有子级和子级路由,因为它的所有子级都包含它。 例如

“displayName”:“Level3”,
“路由”:“另一个文件夹位于\u级别\u 1/level2/level3”,
请帮助我修改架构。在当前路由之前是否有添加父路由的选项,例如
路由:parentFolderRoute+'level3'
,并且parentFolderRoute可能包含
“level1/level2上的另一个文件夹”
。因此,如果更新parentFolderRoute,则其所有子级都会自动更新

顺便说一下,如果有人需要知道,我目前的更新功能如下

router.put('/navlist',(req,res,next)=>{
newDisplayName=req.body.newName
路由=请求主体路由
id=所需主体。\u id
设segments=route.split('/');
let query={route:segments[0]};
让我们更新,选项={};
console.log(“seg”,段)
如果(分段长度===1){
NavItems.updateOne({u id:mongoose.Types.ObjectId(id)},{displayName:newDisplayName})(
res.status(201.json)({
消息:“导航在第一级成功更新!”
})
)
返回
}
else{//复杂的else部分基本上是进入嵌套数组,并更新所需的
让updatePath=“”;
options.arrayFilters=[];
for(设i=0;i
PS:欢迎任何关于包含更新请求的高效体系结构的建议。我的要求是有一个包含父路由的路由,这就是为什么我不考虑在每个条目中保留当前路由的原因