I am using mongoose in nodejs(express) in backend. My array structure has THREE levels. At third level, some files are present. But I need to add entries at any level as per user demand.
{
name:'A folder at Level1',
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'
}
Now I have to add an entry at a specified position. Suppose at level2, I need to add a folder. For adding, two parameters are sent from angular to the backend. These will be 'name' and a 'route'. So my entry would be having {name: 'Products', route: 'level1_a/products'}
and similarily should be placed at correct position i.e. inside the children of level1_a. My backend has a schema which would be like:
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);
And the API would be like:
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!"
})
})
Please help me in adding entries in db. I know navlist.save() adds an entry directly but I am not able to add entries in a nested manner.
PS: I can't change the array structure because this array is easily read by angular and a complete navigation menu is made!! I am working for first time in nodejs and mongoose, so I am having difficulty in writing code with mongoose function.
from Pushing entry into multilevel nested array in MongoDB via mongoose
No comments:
Post a Comment