我正在通过Express构建我的Node.js应用程序。我有两种选择来编写代码以连接到我的MongoDB。
然后
function productRepository(db) {
this.db = db;
};
productRepository.prototype.insert = function(item) {
return new Promise((resolve, reject) => {
this.db.collection('product').insertOne(item, function(err, result) {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
};
module.exports = productRepository;
和
module.exports = function(app, db) {
var productRepository = require('../model/product');
var productRepoInstance = new productRepository(db);
app.get('/test', function(req, res) {
productRepoInstance.insert({ createdAt: new Date() }).then(
(result) => res.send({ result: 1 }),
(error) => {
console.log(error);
res.send({ result: 0 });
});
});
};
我想知道哪个更好,为什么?
答案 0 :(得分:1)
您绝对应该使用多个连接,否则一次只能执行一个查询。最简单的方法是在创建Db对象时在mongodb.Server对象上启用连接池。例如:
var serverOptions = {
'auto_reconnect': true,
'poolSize': 5
};
var mohammadsMongoServer = new mongodb.Db('test', new mongodb.Server('127.0.0.1', 27017, serverOptions));
mohammadsMongoServer.open(function (err, mdb) {}
目前,默认情况下mongodb的连接池大小为5,但可以使用上面的示例代码增加。我建议您使用连接池而不是创建新的单个连接,因为它具有单个连接的所有好处,但通过重用连接可以显着减少开销。