如何将express.js与本机mongoDB驱动程序一起使用

时间:2014-01-30 13:40:07

标签: javascript mongodb express

我在尝试从我的快递应用程序中执行简单的mongoDB查询时遇到了困难:

app.js

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(){

});

路由/ index.js

exports.index = function(db){
  return function(req,res){

  }

};

我是否理解为exports.index'参数是一个数据库实例?如果是这样,为什么我不能db.getCollectionNames()

我如何在路线中使用数据库实例?

1 个答案:

答案 0 :(得分:1)

node.js是异步的。这意味着db以及dbInstance在<{strong> Mongoclient.connect()函数调用之后不存在,而在<{strong> callback之内。因此,您的代码必须如下所示:

MongoClient.connect(mongourl, function(err, db) {
    ...
    app.get( '/', routes.index( db ) );
    ...
});