簡體   English   中英

MEANjs:一個Crud模塊位於另一個Crud模塊之上,而不是用戶模塊之上

[英]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以獲取特定FlatRoom ,例如:

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文檔(實體)包含所有RoomBathroom文檔(實體),我鼓勵您進一步閱讀mongodb數據建模,以弄清楚什么最適合您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM