[英]MEANjs: one crud module on top of another crud module instead of the user module
我正在開發MEAN.js應用程序,並且使用Yo生成器創建了一堆Crud模塊。 我創建的所有新的Crud模塊都鏈接到主用戶模塊,這很有意義,盡管我希望有一個名為“ flats”的Crud模塊鏈接到用戶模塊。
以及我創建的其他分類模塊,例如:“浴室”,“房間”等應鏈接到“公寓”,因此可以說,登錄后,在我的右上角下拉列表中,我可以看到我創建的公寓的列表單擊任何一個,然后頂部欄中的“浴室”和“房間”菜單項應取決於在該“公寓”下創建的房間和浴室
很好奇,我將如何實現以上目標?
答案首先是對實體進行建模,然后將其放置在貓鼬模式中,實體建模的方式可能會有所不同,因此,您應該閱讀有關mongodb數據建模和貓鼬模式,模型,人口的更多信息。
基本上你將有3款(平板,客房,浴室), 客房實體應參照平坦 , 浴室也應該有參考平
要在meanjs中完成此操作,您應該在app \\ models下有3個文件(flat.server.model.js,room.server.model.js,bathroom.server.model.js),每個文件都包含該實體的貓鼬模式,因此room.server.model.js將具有貓鼬模式,例如:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var RoomSchema = new Schema({
name: String,
order: {
type: Number
},
_flat:{
type:String,
ref:'Flat' //refers to the Flat model, should be populated with _id of the Flat entity
}
});
現在,當創建一個新的Room實體時,您應該添加單位的_id,如下所示:
var room=new Room({name: 'living', _flat:'123165464' /*_id of a flat entity*/});
//or:
var room=new Room();
room._flat='123165464'; //_id of a flat entity
要檢索扁平房間,您應該在服務器控制器中有一個函數(app \\ controllers \\ room.server.controller.js),該函數查詢mongodb以獲取特定Flat的Room ,例如:
exports.roomsByFlat= function(req, res) {Room.find({'_flat':'35415453'/*_id of a flat entity*/}).exec(function(err, rooms) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(rooms);
}
});
};
但是此函數具有flat._id靜態屬性,因此我們必須將flat._id傳遞給它,我知道有兩種方法,一種是使用參數定義路徑以保存flat._id,另一種是通過它在查詢字符串中。 查看此帖子的答案,以了解如何同時做到。
請注意,這是一種處理方式,還有其他方式,您可以使Flat文檔(實體)包含所有Room和Bathroom文檔(實體),我鼓勵您進一步閱讀mongodb數據建模,以弄清楚什么最適合您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.