登录
注册
node.js 学习社区
mongoose 模型定义重复引用就报错:Cannot overwrite model once compiled 怎么解决?

撸阿

2015-01-21 19:31

我的mongoose模型定义是这样写的:

var UserAccountSchema = mongoose.Schema({
   //...略去定义代码
});

//导出模型
module.exports = mongoose.model('user.account', UserAccountSchema);
然后,我发现只要require加载这个模块两次,就会出错:

OverwriteModelError: Cannot overwrite `user.account` model once compiled.

这是为什么啊?求大神指教!

回复 · 2

  • 错误提示的意思是:mongoose模型被重复定义了,这是不允许的

    首先,你需要搞清楚require和module.exports的运行机制,建议你看看这篇:http://www.nodeclass.com/articles/37488

    然后,针对你这个场景,不应该把 mongoose.model()模型定义方法做为模块导出的方法,因
    为:

    模型定义不允许重复,所以这个mongoose.model()应该只调用一次,而导出它执行后的结果
    require机制确保了mongoose.model()只会执行一次

    所以,你的代码应该改写成这样:

    var UserAccountSchema = mongoose.Schema({
       //...略去定义代码
    });
    var model = mongoose.model('user.account', UserAccountSchema);
    //导出模型
    module.exports =model;

    2

  • 谢谢!

    0

发表回复

你可以在回复中 @ 其他人