MissingSchemaError:交叉引用时尚未为模型注册模式

时间:2017-05-02 11:23:58

标签: node.js mongodb mongoose

我正在使用猫鼬,我正在尝试这样做:

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

我的问题是当我执行它返回的服务器时:

    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)
.......

如果我删除了offer.model中的inports,则服务器正常启动

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

编辑解释: 优惠是一个单独的实体,它将被分配或不分配给现有用户(用户具有分配的优惠引用数组)。另一方面,优惠提供了一系列由现有用户编写的评论参考。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您正尝试在[{1}}中加入offer.model,从user.model加入user.model。每个文件都试图包含自己。

这就是它给出offer.model架构错误的原因!