2016-07-28 32 views
1

Ich benutze Nodejs und haben eine Registerkarte, die eine Auswahl-Tag hat, um zwischen Client und Mitarbeiter wählen.Mungo: Dynamisch laden verschiedene Schema unter einer Sammlung

Ich möchte ein Modell und 2 Schemen haben: -User: Wille enthält commun Requisiten zB: Mail, Name, passieren ... -EmployeeSchemma mit spezifischen fileds für einen Mitarbeiter -ClientSchemma mit bestimmten Bereichen für einen Kunden .

dies mangeln, was in meinem Server-Seite zu erreichen: (?)

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 // 
}); 

Bitte, wie ich ein solches Ergebnis erzielen können beachten Sie, dass ich will nur ein einziges Modell verwenden, die sowohl Client-modelise können und Mitarbeiterbenutzer abhängig von der Benutzerauswahl im Formular.

+0

das könnte nützlich sein: http://stackoverflow.com/questions/14453864/use-more-than-one-schema-per-collection-on-mongodb – devonJS

+0

danke für die Antwort, aber das nicht, was ich ' Wenn ich suche, möchte ich ein Datenstrukturobjekt verwenden: so etwas wie: var generic = require ('/ models/dynamicModel'); und dann kann dieses Objekt Clientfelder festlegen, wenn es sich um ein Client- oder Mitarbeiterfeld handelt, wenn es sich um einen Mitarbeiter handelt – user3711521

Antwort

0

Wenn Sie ein „dynamisches Modell“ möchte ich glaube, Sie suchen den setting strict to false in mongoose

Wie Sie standardmäßig wissen, Mongoose wird das Schema/Modell folgen Sie Set-up haben, Einstellung streng: false wird es Ihnen ermöglichen, um Felder zu speichern, die nicht in Ihrem Schema/Modell sind.

Also für Ihren Fall, in Ihrer Datei Modelle/user, möchten Sie einschließen „streng: false“ als zweites Argument, wenn Ihr Schema zu erstellen:

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

sollten Sie in der Lage sein, die festlegen Kunden- und Mitarbeiterfelder in der gleichen Sammlung.