2016-07-28 4 views
1

Я использую nodejs и имею страницу регистрации, у которой есть тег select, который можно выбрать между клиентом и сотрудником.Mongoose: динамически загружать другую схему под одну коллекцию

Я хочу иметь 1 Модель и 2 Schemas: -User: воля содержит 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 как клиент и Employee users в зависимости от выбора пользователя в форме.

+0

это может быть полезно: http://stackoverflow.com/questions/14453864/use-more-than-one-schema-per-collection-on-mongodb – devonJS

+0

спасибо за ответ, но это не то, Я ищу, чтобы использовать один объект структуры данных: что-то вроде этого: var generic = require ('/ models/dynamicModel'); и тогда этот объект может устанавливать поля клиента, если это поля клиента или сотрудника, если это сотрудник – user3711521

ответ

0

Если вы хотите «динамическую модель» Я думаю, что вы ищете setting strict to false in mongoose

Как вы знаете, по умолчанию, Mongoose будет следовать схеме/модель вы до установки-, установив строгий: ложь позволит вам для сохранения полей, отсутствующих в вашей схеме/модели.

Так что для вашего случая, в вашей модели файла/пользователе, вы хотите включить «строго: ложь» в качестве второго аргумента при создании схемы:

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

Вы должны быть в состоянии установить поля клиента и сотрудника соответственно в той же коллекции.

Смежные вопросы