簡體   English   中英

Mongodb錯誤:無法連接到[localhost:27017]

[英]Mongodb Error: failed to connect to [localhost:27017]

我有以下代碼:

var express = require('express'),
    mongoose = require('mongoose');


var db = mongoose.connect('mongodb://localhost/bookAPI');

var Book = require('./models/bookModel');

var app = express();

var port = process.env.PORT || 3002;


var bookRouter = express.Router();

bookRouter.route('/Books')
    .get(function(req,res){

        Book.find(function(err,books){
            if(err)
                console.log(err);
            else
                res.json(books);
        });
    });


app.use('/api', bookRouter);



app.get('/', function(req, res){
    res.send('welcome to my API!');
});

app.listen(port, function(){
    console.log('Gulp is running my app on  PORT: ' + port);
});

Bookmodel.js文件:

var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

var bookModel = new Schema({
    title: {
        type: String
    },
    author: {type: String},
    genre: {type: String},
    read: {type: Boolean, default:false}
});

module.exports= mongoose.model('Book', bookModel);

我的gulpfile是:

var gulp = require('gulp'),
    nodemon = require('gulp-nodemon');


gulp.task('default', function(){
    nodemon({
        script: 'app.js',
        ext: 'js',
        env: {
            PORT:8000
        },
        ignore: ['./node_modules/**']
    })
    .on('restart', function(){
        console.log('Restarting');
    });
});

但是我一直收到錯誤:

Gulp is running my app on  PORT: 8000
events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: failed to connect to [localhost:27017]
  at null.<anonymous> (/Users/admin/Documents/NodeAndExpress/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:549:74)

這非常令人沮喪,因為我非常密切地關注了Pluralsight課程。 我已經安裝了所有必要的npm軟件包等。當我刪除連接線時,它肯定是導致錯誤的mongoose連接。 數據庫尚未創建,但教師提到它應該自動創建(如果它尚不存在)。

我嘗試用mongod手動啟動mongoose連接,但是我收到錯誤:

 ERROR: dbpath (/data/db) does not exist.
 Create this directory or give existing directory in --dbpath.

這里有一些活動部分:

  • Mongoose,為MongoDB提供對象建模;
  • MongoDB本身,它是用於存儲使用Mongoose創建的文檔的數據庫(-server)。

在安裝方面,兩者都是獨立的:當你安裝Mongoose時,你不會自動安裝MongoDB(反之亦然)。 此外,當您運行使用Mongoose的Node.js腳本時,它不會自動啟動MongoDB,這是需要單獨完成的事情。

在您的情況下,MongoDB沒有運行,因此Mongoose無法連接到它。 Mongoose可以做的就是抱怨( “未能連接到......” )。

要啟動MongoDB,可以使用mongod命令行程序。 您通常需要為它提供一個可以存儲其數據庫的目錄; 在我的系統(Mac OS X)上,該目錄是/var/db/mongodb ,但這不一定是最佳位置(它取決於您正在運行的操作系統)。

作為快速修復,您可以提供一個臨時目錄作為數據庫目錄:

$ mkdir /tmp/data
$ mongod --dbpath /tmp/data

這對於現實生活來說並不理想,因為/tmp通常在系統啟動期間被清空,因此您的數據庫也將在此時被刪除。 但是,出於測試目的,沒關系。 只要您知道重啟后數據庫將再次為空。

在某些時候,您希望系統在系統啟動時自動啟動MongoDB,但是,它取決於您的操作系統,您需要如何配置它。

我希望您的mongodb安裝由於dbpath錯誤而出錯。 dbpath是mongodb的配置參數: http//docs.mongodb.org/manual/reference/configuration-options/#storage.dbPath

因此,您可能嘗試重新安裝mongodb或將配置選項更改為現有路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM