【发布时间】:2018-01-30 20:07:01
【问题描述】:
db.js
var mongodb = require('mongodb').MongoClient;
var settings = require("./settings.js");
var ObjectId = require('mongodb').ObjectID;
var db = {
selectData: function(collection, query, callback, project = false) {
mongodb.connect(settings.db_url, function(err, client) {
var database = client.db(settings.db_name);
if (err) throw err;
if (project !== false) {
console.log("Project is not false");
console.log( project);
database.collection(collection).find(query, project).toArray(function(err, result) {
client.close();
if (err) throw err;
callback(result);
});
} else {
database.collection(collection).find(query).toArray(function(err, result) {
client.close();
if (err) throw err;
callback(result);
});
}
});
}
}
module.exports = db;
server.js
这是一个简单的查询,单个数据库调用需要几秒钟的时间,没什么大不了的,但根据专家的说法,这仍然不是一个好方法。
var db = require("db.js");
db.selectData("testCollection",{},function(data){
console.log(data);
});
现在这里是一个多查询嵌套数据库调用,它需要更多时间并且对性能和速度非常不利
var db = require("db.js");
db.selectData("testCollection", {}, function(data) {
db.selectData("testCollection", {}, function(data) {
db.selectData("testCollection", {}, function(data) {
db.selectData("testCollection", {}, function(data) {
db.selectData("testCollection", {}, function(data) {
console.log(data);
});
});
});
});
});
我想要的是打开连接一次并在外部使用 db 对象,而无需为每个请求或嵌套查询一次又一次地连接以实现快速响应
我也知道使用 mongodb nodejs 2.3 驱动程序 是可能的,我已经对其进行了完美测试,但我正在寻找解决方案如何使用 mongodb nodejs 3.0 驱动程序
简而言之,我正在寻找一种可以连接一次并更快地执行查询以进行聊天和实时应用程序以及性能优化的方法
谢谢。
【问题讨论】: