2013-01-22 17 views
20

Volevo usare più di uno schema per collezione in mongodb, come usarlo ....?
Mi dà questo errore quando provo a farlo funzionare:

errore:Usa più di uno schema per collezione su mongodb

OverwriteModelError: Cannot overwrite allUsers model once compiled.
OverwriteModelError: Cannot overwrite checkInOut model once compiled.


Heres miei schema.js

var mongoose = require('mongoose'); 

     var Schema = mongoose.Schema 
      , ObjectId = Schema.ObjectId; 

    var checkInInfoSchema= new Schema({ 
     name:String, 
     loginSerialId:Number 
    }); 


    var loginUserSchema = new Schema({ 
      sn : { type: Number, unique:true } 
      ,uname: {type:String, unique:true} 
      ,pass:String 
     }); 

    var registerUserSchema = new Schema({ 
     sn : { type: Number, unique:true } 
     , name: String //his/her name 
     ,pass:String, 
     companyKey:{type:String}, 
     uname:{type:String,unique:true} 
    }); 



    var checkInOutSchema = new Schema({ 
     uname: String 
     ,companyKey:String 
     ,task:String 
     ,inTime:String 
     ,outTime:String 
     ,date:{type:String} 
     ,serialId:{type:Number,unique:true} 
     ,online:Boolean 
    }); 

    //Different schema for same collection "allUsers"   
    var allUser=mongoose.model('allUsers',loginUserSchema);   
    var registerUser=mongoose.model('allUsers',registerUserSchema); 

    //Different schema for same collection "checkInOut" 
    var checkInOut=mongoose.model('checkInOut',checkInOutSchema); 
    var checkInInfo=mongoose.model('checkInOut',checkInInfoSchema); 

    module.exports={ 

     allUser:allUser, 
     registerUser:registerUser, 

     checkInOut:checkInOut, 
     checkInInfo:checkInInfo 
    }; 

risposta

40

In mangusta si può fare qualcosa di simile:

var users = mongoose.model('User', loginUserSchema, 'users'); 
var registerUser = mongoose.model('Registered', registerUserSchema, 'users'); 

Questi due schemi salveranno sulla raccolta "utenti".

Per ulteriori informazioni è possibile fare riferimento alla documentazione: http://mongoosejs.com/docs/api.html#index_Mongoose-model o è possibile vedere il seguente gist potrebbe aiutare.

+1

Stavo dando loro gli stessi nomi e non sapevo che il nome della collezione è previsto nel 3 ° parametro. –

+0

Qualche suggerimento su come eseguire metodi per la ricerca di oggetti di schemi BOTH? ad esempio, voglio trovare sia utenti che utenti registrati e ordinare per data, usando solo la query. – Leg0

+1

Leg0, cosa c'entra jQuery con questo? – bluehallu

Problemi correlati