【发布时间】:2020-12-30 15:56:23
【问题描述】:
我在后端的 nodejs(express) 中使用猫鼬。我的数组结构有三个级别。在第三层,存在一些文件。但我需要根据用户需求添加任何级别的条目。
[
{
"name": "A folder at",
"route": "level1_a"
},
{
"name":"Another folder at Level1",
"route": "level1_b",
"children":
[
{
"name": "A folder at Level2",
"route": "level1_b/level2_a",
"children":
[
{
"name": "A folder at Level3",
"route": "level1_b/level2_a/level3_a",
"children":
[
{
"name": "A file at last level",
"route": "level1_b/level2_a/level3_a/file1"
},
{
"name": "Add a new File",
"route":"level1_b/level2_a/level3_a/new_file"
}
]
},
{
"name": "Add Folder at Level3",
"route":"level1_b/level2_a/new_folder"
}
]
},
{
"name": "Add Folder at level2",
"route":"level1_b/new_folder"
}
]
},
{
"name": "Add Folder at Level1",
"route":"new_folder"
}
]
现在我必须在指定位置添加一个条目。假设在 level2,我需要添加一个文件夹。为了添加,两个参数从角度发送到后端。这些将是“名称”和“路线”。所以我的条目将有{name: 'Products', route: 'level1_a/products'} 并且类似地应该放置在正确的位置,即在level1_a 的孩子内部。
我的后端有一个架构,如下所示:
const navSchema = mongoose.Schema({
name:{type:String,required:true},
route:{type:String},
children:{
type: {
name:{type:String,required:true},
route:{type:String},
}}
});
module.exports = mongoose.model('NatItems',navSchema);
API 会是这样的:
router.post('/navlist',(req,res,next)=>{
const name= req.body.folder;
const route= req.body.url;
console.log(folder,url);//it will be required parameters like name: 'Products', route:'level1_a/products'
//let pathArray = route.split('/'); //if you want you can split the urls in the array
//Help me write the code here
res.status(201).json({
message:"Post added successfully!"
})
})
请帮助我在数据库中添加条目。我知道 navlist.save() 直接添加一个条目,但我无法以嵌套方式添加条目。
PS:我无法更改数组结构,因为这个数组很容易被 angular 读取并制作了完整的导航菜单!我是第一次在 nodejs 和 mongoose 中工作,所以我我很难用猫鼬函数编写代码。
【问题讨论】:
标签: javascript node.js mongodb express mongoose