连接到mongodb时出错

我正在使用node-run-cmd包在我的app.js文件中启动mongodb服务器。 我知道这是有效的,因为我可以在运行脚本的时候看到Robomongo上的集合,以及正在运行的进程列表中的mongod.exe。 问题是试图连接到称为testDB的数据库。 以下是注释的代码。

//start mongodb server //this works var nrc = require('node-run-cmd'); var cmd = '..\\mongodb\\mongod --dbpath '+__dirname+'\\db'; nrc.run(cmd); //setup var express = require('express'); var MongoClient = require('mongodb').MongoClient; var app = express(); app.use(express.static('public')); app.set('view engine', 'ejs'); //connect to mongo //this fails to connect to db testDB var url = 'mongodb://localhost:27017/testDB'; MongoClient.connect(url, function(err, db) { if(!err) { console.log("connection successful"); } else{ console.log(err.message) } }); 

这是err.message

 failed to connect to server [localhost:27017] on first connect 

任何想法我在这里做错了。 我的假设是数据库连接尝试之前,服务器已经完全启动,但我不完全确定。

编辑:

所以就是这样,计时问题。 我尝试了以下,并连接到数据库。 除了我在这里以外,还有一种优雅的方式吗?

 function connect(){ var url = 'mongodb://localhost:27017/testDB'; MongoClient.connect(url, function(err, db) { if (!err) { console.log("connection successful"); } else { console.log(err.message) } }); } setTimeout(connect, 10000); 

您应该在node_run_cmd包中使用callback( https://www.npmjs.com/package/node-run-cmd#callback-style )。

将您的连接function放在callback中。

你可能也只想在这里开始expression。