2016-07-28 66 views
1

我正在使用nodejs並且有一個註冊頁面,該頁面上有一個選擇標籤以在客戶端和員工之間進行選擇。貓鼬:在一個集合下動態加載不同的架構

我想有1型和2架構: - 用戶:將含有COMMUN道具,例如:電子郵件,姓名,通... -EmployeeSchemma具體的Fileds爲員工 -ClientSchemma與客戶的特定字段。

這是在想在我的服務器端實現:(?)

var User=require("models/user"); 

router.post("/register",function(req,res){ 
var newUser=new User(); 

if(req.body.type=="client") 
    // make the newUser use the ClientSchema // 

if(req.body.type=="employee") 
    // the newUser instance will use the EmployeeSchema // 
}); 

請我怎麼能取得這樣的成績 注意,我只是想用一個單一的模式,可以modelise兩個客戶端和員工用戶,具體取決於用戶在表單中的選擇。

+0

這可能是有用的:http://stackoverflow.com/questions/14453864/use-more-than-one-schema-per-collection-on-mongodb – devonJS

+0

謝謝你的答案,但這不是我所「 m尋找,我想要的是使用一個數據結構對象:類似的東西:var generic = require('/ models/dynamicModel');然後該對象可以設置客戶字段,如果它是客戶或僱員字段,如果它是員工 – user3711521

回答

0

如果你想要一個「動態模型」我認爲你正在尋找setting strict to false in mongoose

大家知道在默認情況下,貓鼬會跟着你已經建立的模式/模式,制定嚴格的:假會讓你保存不在您的模式/模型中的字段。

所以對於你的情況,你的文件模型/用戶,你要包括:創建架構時「嚴格假」作爲你的第二個參數:

var userSchema = new Schema({ 
    email: String, 
    name: String, 
    password: String 
    // other parts of your user schema 
}, {strict: false}) 

您應該能夠設置客戶和員工領域現在在相同的集合中。