我正在使用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);
答案 0 :(得分:2)
您应该在node_run_cmd包(https://www.npmjs.com/package/node-run-cmd#callback-style)中使用回调。
将你的连接功能放在回调中。
你可能也想在这里开始表达。