由于我已经注意到文档中的深层嵌套数组不是一个好习惯,因此我想在Mongoose中使用ExpressJS使用references
。现在,我正在制作一个CMS,其中有用户可以发布的菜单项。每个菜单项都可以包含用户也可以发布的子项。但是我不知道如何使用引用,因此我可以在主要项目集合和子项目集合之间进行引用。
这是我的Main_items猫鼬模型:
var menuItems = new mongoose.Schema({
title : String,
subitem: {
type: mongoose.Types.ObjectId,
ref: 'sub_items'
}
}, {collection: 'menu_items'});
module.exports = mongoose.model("menu_items", menuItems);
和sub_items模型:
var subItems = new mongoose.Schema({
title: String,
});
module.exports = mongoose.model("sub_items", subItems);
主要菜单项的帖子
postController.postMainItems = function(req,res,item){
var saveData = {
title : req.body.title
};
var data = new item(saveData);
saveToDB(data,res);
};
我已经为主菜单项创建了一个帖子。这样可行。但是现在我想知道如何发布子项目,以便将它们直接引用到每个主要项目
答案 0 :(得分:0)
按如下所示更改架构,以便您需要先将main menu
插入title
,然后将子菜单插入title
和parent(_id of parent main menu)
。
主菜单架构:
var menuItems = new mongoose.Schema({
title : String
}, {collection: 'menu_items'});
module.exports = mongoose.model("menu_items", menuItems);
子菜单架构:
var subItems = new mongoose.Schema({
title: String,
parent: { type: mongoose.Types.ObjectId, ref: 'menu_items'}
});
module.exports = mongoose.model("sub_items", subItems);