[英]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(反之亦然)。 此外,當您運行使用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.