gpt4 book ai didi

javascript - 搜索在多个 javascript 文件中使用一个 mongodb 连接的最佳实践

转载 作者:行者123 更新时间:2023-12-03 05:57:20 25 4
gpt4 key购买 nike

目前,我使用express 开发了一个node.js REST Web 服务。我使用MongoDB + Mongoose建立数据库。现在,我遇到了问题,我只能使用建立连接的文件中的数据库连接。我找到了一个通过“module.exports”_db 变量在其他文件中使用连接的解决方案。但我不知道这是否是最佳做法。这是我的代码:

数据库管理器.js

// Establish a connection to the database.
mongoose.Promise = global.Promise
mongoose.connect('mongodb://'+cfg.db.ip+':'+cfg.db.port+'/'+cfg.db.name)
var _db = mongoose.connection
_db.on('error', console.error.bind(console, 'DB connection error'))
_db.once('open', function()
{
console.log("DatabaseM: Connected to the database")
})
[...]
module.exports =
{
db : _db,
}

其他文件.js

var database = require('./databaseManagement')
[...]
database.db.collection('users').findOne({ name: "ashton"}, function(err, user)
{
if (err) return callback(consts.ERROR_DB, null)
if (!user) return callback(consts.WARN_DB_NO_CLIENT)

callback(null, user)
})

效果很好。但可能存在我没有看到的风险?非常感谢:-)

最佳答案

在你的 app.js 文件中:

var url="mongdb:\\localhost:27017\dbname";
mongoose.connect(url); //it open default connection for mongodb and is handled by mongoose

现在执行您想要的所有任务:

mongoose.connection.on('已连接', function () { console.log('Mongoose 默认连接打开到 ' + dbURI); });

将所有数据库模型放入 app.js 文件中,如下所示:

var model1 = require('./models/model1');

model1.js

var mongoose = require('mongoose');
var data = new mongoose.Schema({
name:{type:String, required:true}
});
module.exports = mongoose.model('collectionName', data);

现在,当你的所有任务都结束时。只需关闭默认连接,如下所示:

mongoose.connection.on('disconnected', function () { 
console.log('Mongoose default connection disconnected');
});

如果连接发生任何错误,请按如下方式处理:

mongoose.connection.on('error',function (err) { 
console.log('Mongoose default connection error: ' + err);
});

如果 Node 服务退出,则使用此代码关闭连接

process.on('SIGINT', function() { 
mongoose.connection.close(function () {
console.log('Mongoose default connection disconnected through app termination');
process.exit(0);
});
});

关于javascript - 搜索在多个 javascript 文件中使用一个 mongodb 连接的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39873227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com