2016-12-02 104 views
2

我在運行index.js時遇到了此問題。無法連接到MongoDB。請確保mongod運行在mongodb:// localhost:27017/mongo-server

這裏是我的代碼:

var http = require('http'), 
    express = require('express'), 
    path = require('path'), 
    MongoClient = require('mongodb').MongoClient, 
    Server = require('mongodb').Server, 
    CollectionDriver = require('./collectionDriver').CollectionDriver; 

var app = express(); 
app.set('port', process.env.PORT || 3000); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 
var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({extended: false})); 

var mongoHost = 'localHost'; 
var mongoPort = 27017; 
var collectionDriver; 

var url = 'mongodb://localhost:27017/mongo-server'; 
// Use connect method to connect to the server 
MongoClient.connect(url, function(error, db) { 
    if (error) { 
    console.error("Unable to connect to MongoDB. Please make sure mongod is running on %s.", url); 
    process.exit(1); 
    } 

    console.log("Connected to MongoDB successfully."); 
    collectionDriver = new CollectionDriver(db); 
}); 

app.use(express.static(path.join(__dirname, 'public'))); 

app.get('/', function (req, res) { 
    res.send('<html><body><h1>Hello World</h1></body></html>'); 
}); 

app.get('/:collection', function(req, res) { 
    var params = req.params; 
    collectionDriver.findAll(req.params.collection, function(error, objs) { 
      if (error) { res.send(400, error); } 
      else { 
       if (req.accepts('html')) { 
        res.render('data',{objects: objs, collection: req.params.collection}); 
       } else { 
       res.set('Content-Type','application/json'); 
        res.send(200, objs); 
       } 
     } 
    }); 
}); 

app.get('/:collection/:entity', function(req, res) { 
    var params = req.params; 
    var entity = params.entity; 
    var collection = params.collection; 
    if (entity) { 
     collectionDriver.get(collection, entity, function(error, objs) { 
      if (error) { res.send(400, error); } 
      else { res.send(200, objs); } 
     }); 
    } else { 
     res.send(400, {error: 'bad url', url: req.url}); 
    } 
}); 

app.post('/:collection', function(req, res) { 
    var object = req.body; 
    var collection = req.params.collection; 
    collectionDriver.save(collection, object, function(err,docs) { 
      if (err) { res.send(400, err); } 
      else { res.send(201, docs); } 
    }); 
}); 

app.put('/:collection/:entity', function(req, res) { 
    var params = req.params; 
    var entity = params.entity; 
    var collection = params.collection; 
    if (entity) { 
     collectionDriver.update(collection, req.body, entity, function(error, objs) { 
      if (error) { res.send(400, error); } 
      else { res.send(200, objs); } 
     }); 
    } else { 
     var error = { "message" : "Cannot PUT a whole collection" } 
     res.send(400, error); 
    } 
}); 

app.delete('/:collection/:entity', function(req, res) { 
    var params = req.params; 
    var entity = params.entity; 
    var collection = params.collection; 
    if (entity) { 
     collectionDriver.delete(collection, entity, function(error, objs) { 
      if (error) { res.send(400, error); } 
      else { res.send(200, objs); } 
     }); 
    } else { 
     var error = { "message" : "Cannot DELETE a whole collection" } 
     res.send(400, error); 
    } 
}); 

app.use(function (req,res) { 
    res.render('404', {url:req.url}); 
}); 

http.createServer(app).listen(app.get('port'), function(){ 
    console.log('Express server listening on port ' + app.get('port')); 
}); 

我是新來的MongoDB。

+2

你運行'MongoDB'運行前'節點index.js' – Mikhail

+2

你可以改變你console.error消息輸出實際的錯誤信息,至少調試?可能性是mongodb服務器沒有運行,或者有防火牆阻止它,或者它需要身份驗證。但是如果你記錄錯誤,你會知道更多。 – Paul

+0

@保羅,怎麼做?我在這裏是如此新穎:) – Khuong

回答

2
  • 第一啓動蒙戈服務器 步爲
  • C:\ Program Files文件\ MongoDB的\服務器\ 3.2 \ BIN
  • 寫信mongod
  • 成功運行後,你會看到這個輸出

我的連接

var MongoClient = require('mongodb').MongoClient, 
    format = require('util').format; 
MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) { 
    if (err) { 
     throw err; 
    } else { 
     console.log("successfully connected to the database"); 
    } 
    db.close(); 
}); 
代碼

enter image description here

+0

謝謝。有用。 – Khuong

1

確保從終端或命令提示符處啓動您的mongo服務器。

按照下面的步驟來啓動服務器:

  1. 如果未安裝的MongoDB,從https://www.mongodb.com/download-center#community安裝。

  2. 你必須在你的c文件夾中創建一個名爲data和inside data的新目錄,創建一個名爲db的directoy。這些文件夾是您的mongodb保存數據所必需的。

  3. 現在打開終端或命令提示符,在駐留在mongodb文件夾中的bin文件夾內導航並輸入mongod。這將啓動你的服務器。
+0

謝謝。有用。 – Khuong