Node.js 连接到mongodb时出错
我正在使用包启动app.js文件中的mongodb服务器。我知道这是可行的,因为当我的脚本运行时,我可以看到Robomongo上的集合以及运行进程列表中的mongod.exe。问题是试图连接到名为testDB的数据库。下面是注释代码Node.js 连接到mongodb时出错,node.js,mongodb,Node.js,Mongodb,我正在使用包启动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'; nr
//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
你知道我做错了什么吗。我的假设是,在服务器完全启动之前,db连接正在尝试,但我不能完全确定
编辑:
这就是时间问题。我尝试了以下操作,并将其连接到数据库。除了我这里的方法,还有其他优雅的方法吗
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包()中使用回调 将connect函数放在回调函数中
您可能也只想在这里启动express。检查您的mongodb服务器是否正在运行它正在根据进程列表和RoboMongoOK运行,所以我想现在我已经解决了您的问题。。。将连接延迟几秒钟。这是因为mongod是守护进程。它不是从套接字开始接受连接,而是需要一些时间。另外,由于是守护进程,父进程将在完成数据库引导之前关闭。顺便说一句,正确的方法是始终保持数据库运行实际上,它不起作用。正在启动的服务器不会被认为完成了我相信哦,你是对的。node run cmd可能会在从mongod.exe返回良好状态后立即返回,但它尚未侦听连接。可能有一个npm模块用于在端口可用时向您发出警报,但您也可以使用setInterval尝试每500毫秒连接一次。