我在尝试从我的快递应用程序中执行简单的mongoDB查询时遇到了困难:
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var mongourl = ''; // omitted on SO
var MongoClient = require('mongodb').MongoClient;
var dbInstance;
MongoClient.connect(mongourl, function(err, db) {
db.on('open',function(){
dbInstance = db;
})
});
app.get('/', routes.index(dbInstance));
http.createServer(app).listen(app.get('port'), function(){
});
exports.index = function(db){
return function(req,res){
}
};
我是否理解为exports.index'参数是一个数据库实例?如果是这样,为什么我不能db.getCollectionNames()
?
我如何在路线中使用数据库实例?
答案 0 :(得分:1)
node.js是异步的。这意味着db
以及dbInstance
在<{strong> Mongoclient.connect()
函数调用之后不存在,而在<{strong> callback
之内。因此,您的代码必须如下所示:
MongoClient.connect(mongourl, function(err, db) {
...
app.get( '/', routes.index( db ) );
...
});