使用最新的 mongoose 更新,您不能再像我以前那样进行用户建模。我需要在整个应用程序中共享相同的数据库连接。
https://github.com/LearnBoost/mongoose/issues/1249 https://github.com/LearnBoost/mongoose/issues/1249
这是不再有效的旧方法:
./models/user.js
var mongoose = require('mongoose'), cfg = require('../config')
, Schema = mongoose.Schema
, db = mongoose.createConnection(cfg.mongo.uri, cfg.mongo.db);
...
module.exports = db.model('Item', ItemSchema);
如何按照上面 github 问题中的建议重新使用数据库连接?
我在用着var User = require('./models/user');
在我的代码库的几个不同的地方。
选项 1:使用共享对象
我的模型代码看起来很相似,但我不是重复需要这些模块,而是在应用程序启动时需要它们一次,然后将结果分配给共享对象。例如,如果您使用的是 Express 应用程序,您可以这样app.locals.models.User = require('./models/user');
。然后任何可以访问的app
无需要求即可查看您的模型。
选项 2:确保导出函数中的单个修改
您可以像这样定义您的用户模块:
var mongoose = require('mongoose');
var userSchema = new mongoose.Schema({name: String});
var User = null;
module.exports = function(db) {
if (db && User === null) {
User = db.model('User', userSchema);
}
return User;
};
当您开始申请时,您只需:require('./models/user')(db)
。应用程序中其他模块的后续需求可能会删除db
参数,如User
只会被设置一次。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)