Используйте более одной схемы в коллекции на mongodb
Я хотел использовать более одной схемы на коллекцию в mongodb, как ее использовать....?
Это дает мне эту ошибку, когда я пытаюсь запустить его:
ошибка: 
OverwriteModelError: невозможно перезаписать
allUsersмодели после компиляции.
OverwriteModelError: невозможно перезаписатьcheckInOutмодели после компиляции.
вот моя схема.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
   };
2 ответов
в мангуста вы можете сделать что-то вроде этого:
var users = mongoose.model('User', loginUserSchema, 'users');
var registerUser = mongoose.model('Registered', registerUserSchema, 'users');
эти две схемы будут сохранены в коллекции "пользователи".
для получения дополнительной информации вы можете обратиться к документации:http://mongoosejs.com/docs/api.html#index_Mongoose-model или вы можете увидеть следующее суть это может помочь.
я попробовал выбранный ответ, но при запросе определенного объекта модели он извлекает данные обеих схем. Поэтому я думаю, что использование дискриминатора дает лучшее решение:
const coordinateSchema = new Schema({
    lat: String,
    longt: String,
    name: String
}, {collection: 'WeatherCollection'});
const windSchema = new Schema({
   windGust: String,
   windDirection: String,
   windSpeed: String
}, {collection: 'WeatherCollection'});
//Then define discriminator field for schemas:
const baseOptions = {
    discriminatorKey: '__type',
    collection: 'WeatherCollection'
};
//Define base model, then define other model objects based on this model:
const Base = mongoose.model('Base', new Schema({}, baseOptions));
const CoordinateModel = Base.discriminator('CoordinateModel', coordinateSchema);
const WindModel = Base.discriminator('WindModel', windSchema);
//Query normally and you get result of specific schema you are querying:
mongoose.model('CoordinateModel').find({}).then((a)=>console.log(a));
пример:
{ __type: 'CoordinateModel', // discriminator field
    _id: 5adddf0367742840b00990f8,
    lat: '40',
    longt: '20',
    name: 'coordsOfHome',
    __v: 0 },
