2014-09-19 85 views
1

問題:只有當我手動啓動mongodb時,網頁纔有效。否則,我會收到錯誤「錯誤無法連接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 2014-09-19 05:16:22

+3

MongoDB不會「從Node.js *開始」。 Node.js是一個可以連接到正在運行的MongoDB服務器的客戶端。 「服務器」類型就是庫用來跟蹤它可以連接的服務器的詳細信息。你將不得不分別管理'mongod'。 – 2014-09-19 05:29:39

+1

同意,它是獨立的,不是從nodejs開始的。如果您在啓動mongodb時遇到問題,請閱讀[本主題](http://stackoverflow.com/questions/23260119/mongodb-in-linux-server/23261303#23261303) – yaoxing 2014-09-19 06:04:20

回答

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' – 2016-11-24 14:13:40