CNode

mongoose.model重复定义的问题

问答
Ttashuo发布于11 年前最后回复11 年前4 回复6851 浏览0 收藏

定义一个文件 user.js:

	var mongoose = require('mongoose');
  	mongoose.connect('mongodb://localhost/test',function(err){
		if(err){
			console.log('message mongodb connect failed: '+err);
		}
	});

	module.exports = function(){
		var userSchema = new mongoose.Schema({
			username: String
		});

		mongoose.model('User', userSchema);
	}

然后在另一些文件中调用:

	...a.js
	require('user.js')();
	//下面是mongodb对User的操作
	...

多个文件调用时会出现重复定义的报错: Cannot overwrite 'User' model once compiled 请问该怎么处理这种重复定义的问题,或者说怎么定义mongoose的数据集供其他代码逻辑调用?

查看回复

回复 (4)

J
jinceon#1·11 年前
module.exports =mongoose.model('User')

var user = mongoose.model('User')
C
Chen-xy#2·11 年前

这个问题之前我碰到过,在长连接的情况下通过不同的路径引入model就会出现这个问题。 后来找了两天,解决办法如下: try { var model=base.db().model('user.account', UserAccountSchema); } catch(e) { if (e.name === 'OverwriteModelError') { model=base.db().model('user.account'); } } 2L的方法应该是正确的。

T
tashuo#3·11 年前
引用 jinceon

@jinceon 谢谢 这种方法确实可以解决重复定义的报错,只是它报错的原因是什么,而这种方法又是怎么避免了重复定义?

T
tashuo#4·11 年前
参与回复
登录后即可参与回复。登录