2014-09-19 3 views
1

문제 : 웹 페이지가 수동으로 mongodb를 시작하는 경우에만 작동합니다. 그렇지 않으면 "Error to connect 127.0.0.1:27017"오류가 발생합니다. 그러나, 나는 서버를 만들 것이라고 믿는다. 아마도 약간의 단계가 빠져있다.mongodb가 nodejs에서 시작하지 않습니다

또한, 일을 더 나은 방법을 지적 주시기, 또는 무언가가 오래된 경우 ...

코드 :

var express = require('express'), 
    app = express(), 
    cons = require('consolidate'), 
    MongoClient = require('mongodb').MongoClient, 
    Server = require('mongodb').Server; 

app.engine('html', cons.swig); 
app.set('view engine', 'html'); 
app.set('views', __dirname + '/views'); 

var mongoclient = new MongoClient(new Server("127.0.0.1", 27017)); 
var db = mongoclient.db('course'); 

app.get('/', function(req, res){ 

    // Find one document in our collection 
    db.collection('hello_combined').findOne({}, function(err, doc) { 

     if(err) throw err; 

     res.render('hello', doc); 
    }); 
}); 

app.get('*', function(req, res){ 
    res.send('Page Not Found', 404); 
}); 

mongoclient.open(function(err, mongoclient) { 

    if(err) throw err; 

    app.listen(8080); 
    console.log('Express server started on port 8080'); 
}); 
+1

당신이 실행하는 몽고 데몬이 있습니까? 터미널에서 mongo 클라이언트를 시작하고 클라이언트를 통해 서버에 연결할 수 있는지 확인하십시오. – mithunsatheesh

+3

MongoDB는 "* Node.js *에서 시작하지 않습니다." Node.js는 실행중인 MongoDB 서버에 연결할 수있는 클라이언트입니다. 'Server' 타입은 라이브러리가 연결할 수있는 서버의 세부 사항을 추적하기 위해 라이브러리가 사용하는 것입니다. 'mongod '를 별도로 관리해야합니다. –

+1

동의 함, 독립형이며 nodejs에서 시작되지 않았습니다. mongodb를 시작하는 데 문제가 있다면, [이 스레드를 읽으십시오 (http://stackoverflow.com/questions/23260119/mongodb-in-linux-server/23261303#23261303) – yaoxing

답변

2

당신이 정말로 "nodejs에서"를 시작해야하는 경우 child_process 모듈을 사용하여 node.js 서버를 시작할 때 mongodb를 시작할 수 있습니다.

앱 코드에 아래의 코드를 추가

var child_process = require('child_process') 
child_process.exec('start mongod', function (err, stdout, stderr) { 
     if (err) { 
      console.log(err); 
      return; 
     } 
    }); 
+0

왜'잡히지 않은 오류 : 명령 실패 :/bin/sh -c mongod' –

관련 문제