Tuesday, 2 May 2017

MissingSchemaError: Schema hasn't been registered for model when crossed references

I'm using mongoose and I'm trying to do this:

user.model.js

var mongoose = require('../../db/mongodb.connector'),
    Schema   = mongoose.Schema;

require('./offer.model');
var Offer = mongoose.model('Offer');

var userSchema = new Schema({
    name:                  { type: String },
    myOffers:            [{type: Schema.Types.ObjectId,ref: 'Offer'}],

});

module.exports = mongoose.model('User', userSchema);

offer.model.js

var mongoose = require('../../db/mongodb.connector'),
    Schema   = mongoose.Schema;


require('./user.model');
var User = mongoose.model('User');

var commentSchema  = new Schema({

    user:              {type: Schema.Types.ObjectId,ref: 'User'},
    comment:           {type: String},
    likes:             {type: Number}
});

var offerSchema  = new Schema({
    name:               {type: String},
    comments:           [commentSchema],
    likes:              {type:Number}
});



module.exports = mongoose.model('Offer', offerSchema);

My problem is when I execute the server it returns :

    D:\WebStorm\Alertame-Backend\node_modules\mongoose\lib\index.js:362
          throw new mongoose.Error.MissingSchemaError(name);
          ^
    MissingSchemaError: Schema hasn't been registered for model "User".
    Use mongoose.model(name, schema)
        at Mongoose.model (D:\WebStorm\myproject\node_modules\mongoose\lib\index.js:362:13)
        at Object.<anonymous> (D:\WebStorm\myproject\db\models\offer.model.js:9:21)
.......

If I remove the inports in offer.model the server start normally

require('./user.model');
    var User = mongoose.model('User');

What would I'm doing wrong?



via Hanzo

No comments:

Post a Comment