连接到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。