在子对象中存储父属性以增强嵌套Javascript数组中的更新操作
我的Express中有以下数组在子对象中存储父属性以增强嵌套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”, “儿
[
{
“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:欢迎任何关于包含更新请求的高效体系结构的建议。我的要求是有一个包含父路由的路由,这就是为什么我不考虑在每个条目中保留当前路由的原因