2013-01-22 13 views
20

Tôi muốn sử dụng nhiều lược đồ cho mỗi bộ sưu tập trong mongodb, cách sử dụng nó ...?
Nó mang lại cho tôi lỗi này khi tôi cố gắng chạy nó:

Lỗi:Sử dụng nhiều lược đồ cho mỗi bộ sưu tập trên mongodb

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


Heres schema.js tôi

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

Trả lời

40

Trong mongoose bạn có thể làm một cái gì đó như thế này:

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

Hai lược đồ này sẽ lưu vào bộ sưu tập 'người dùng'.

Để biết thêm thông tin, bạn có thể tham khảo tài liệu: http://mongoosejs.com/docs/api.html#index_Mongoose-model hoặc bạn có thể xem gist sau đây có thể hữu ích.

+1

Tôi đã cung cấp cho họ cùng một tên và không biết rằng tên của bộ sưu tập được mong đợi trong thông số thứ 3. –

+0

Bất kỳ đề xuất nào về cách thực hiện các phương pháp để tìm kiếm đối tượng của BOTH schemas? Ví dụ: , tôi muốn tìm cả người dùng và người dùng đã đăng ký và sắp xếp theo ngày, chỉ sử dụng truy vấn. – Leg0

+1

Leg0, jQuery phải làm gì với điều này? – bluehallu