连接到mongodb时出错

时间:2017-02-28 18:17:35

标签: node.js 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);

1 个答案:

答案 0 :(得分:2)

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

将你的连接功能放在回调中。

你可能也想在这里开始表达。