一尘不染

与mongoose / node.js共享数据库连接参数的最佳方法

node.js

我正在使用Mongoose来管理Mongo数据库。我的连接文件非常简单:

var mongoose = require('mongoose')

mongoose.connection.on("open", function(){
  console.log("Connection opened to mongodb at %s", config.db.uri)
});
console.log("Connecting to %s", config.db.uri)
mongoose.connect(config.db.uri)

global.mongoose = mongoose

然后在我的app.js中

require('./database)

并且“猫鼬”变量在全球范围内可用。我不想使用全局变量(至少不直接使用)。是否有更好的方法通过单例模式或其他方法在节点之间共享数据库连接变量(我正在使用express.js)?


阅读 186

收藏
2020-07-07

共1个答案

一尘不染

我只是在app.js文件中执行以下操作:

var mongoose = require('mongoose');
mongoose.connect('mongodb://address_to_host:port/db_name');
modelSchema = require('./models/yourmodelname').YourModelName;
mongoose.model('YourModelName', modelSchema);
// TODO: write the mongoose.model(...) command for any other models you have.

此时,任何需要访问该模型的文件都可以执行以下操作:

var mongoose = require('mongoose');
YourModelName = mongoose.model('YourModelName');

最后,在模型中,可以正常编写文件,然后将其导出到底部:

module.exports.YourModelName = YourModelName;

我不知道这是否是最好的最棒的解决方案(大约两天前才开始将我的头缠在导出模块上),但是它确实有效。也许有人可以发表评论,如果这是个好方法。

2020-07-07