2017-06-25 17 views
0

更新:この問題は解決しました。私は不規則なssh - node app.jsを行い、偶然にもそれは5〜10分のようになりました。私が帰ってきた時、初めての結果があった。今はいつも正常に動作しますが、私はその取引が何であったのか分かりません。DBに接続中のマングースエラー

私はこの問題がおそらくmongoDBとMongooseについての基本的な知識の欠如に由来することを認識していますが、本当に答えは見つかりません。基本的な文書を読むことを試みても。うまくいけば私の問題は私が考えていないいくつかのばかげたシンプルなことです...

ノードapp.jsを実行するたびに、Expressが起動してポート8000​​でリッスンしているというメッセージが表示され、まもなく "mongoDBへの接続中にエラーが発生しました "。 (私はNode、Express、mongoDBで迷惑メールマシンを使用しています)。したがって、localhost:8000は少なくとも私に何らかの結果を与えるべきですが、サーバーはまったく見つかりません。

私はそれが数週間前に動作するように手に入れた、と私は放浪アップしなければならなかった覚えている - 浮浪者のssh - モンゴ - todoDBを使用し、その後ノードがをapp.js。 mongoシェルと迷惑メールsshログオンを終了した場合、動作を停止します。私は一般的にmongoDBについて少し混乱しているので、それは私にとっては不思議なようでした。私はあなたが迷惑メールマシンを稼働させなければならないことに気づいていますが、私の接続がdbの名前を指定するとすぐにdbが作成され使用されると思いました。

今、私がをしていても、アプリケーションを実行する前にsog - mongo - todoDBを使用しても、結果は得られません。私は何も変えていない。

問題の原因を理解していただければ幸いです。

下記の完全なコード。

// config/database.js 
dbConfig.connectionString: "mongodb://localhost/todoDB" 




// libs/dbHelper.js 
let mongoose = require("mongoose"); 

module.exports = { 
    initialize : function() { 

     let dbConfig = require("../config/database.js"); 

     let db = mongoose.connection; 

     db.on("error", function() { 
     console.log("Error connecting to mongoDB."); 
     }); 

     db.once("open", function() { 
      console.log("Succesfully connected to mongoDB."); 
     }); 

     process.on("SIGINT", function() { 
      db.close(function() { 
       console.log("Mongoose connection disconnected through app termination."); 
       process.exit(0); 
      }); 
     }); 

     mongoose.connect(dbConfig.connectionString); 
    } 
}; 




// app.js 
"use strict"; 

let express = require("express"); 
let bodyParser = require("body-parser"); 
let exphbs = require("express-handlebars"); 
let path = require("path"); 

let app = express(); 
let port = process.env.PORT || 8000; 

require("./libs/dbHelper").initialize(); 

app.engine(".hbs", exphbs({ 
    defaultLayout: "main", 
    extname: ".hbs" 
})); 
app.set("view engine", ".hbs"); 

app.use(bodyParser.json()); 

app.use(bodyParser.urlencoded({ extended: true })); 

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

app.use("/", require("./routes/home.js")); 
app.use("/", require("./routes/todo.js")); 

app.use(function(request, response, next) { 
    response.status(404).send("error/404"); 
}); 

app.use(function(error, request, response, next) { 
    console.log(error.stack); 
    response.status(500).send("Something broke"); 
}); 

app.listen(port, function() { 
    console.log("Express app listening on port %s!", port); 
}); 
+0

端末でどのポートがアクティブであるかを特定します。これは... sudo netstat -peanut –

+0

ありがとう、これは正しい方向へのステップでした。私はポートを変更し、アプリケーションが動作しています(localhostは結果を返します)。しかし、mongoDBへの接続エラーはまだ有効です。 – eiwob

+0

コマンドラインからmongoデータベースサーバーが実行中であることを確認します。問題... mongo ... mongoシェルにジャンプします...正しいデータベースに入ります。あなたのmongoが稼働していることを確認してください –

答えて

0

dbConfig.connectionString: "mongodb://localhost:27017/todoDB"

27017で

dbConfig.connectionString: "mongodb://localhost/todoDB"

を交換してみてくださいデフォルトのポートであるので、あなたがあなた自身を設定し、別のポートで実行されているモンゴを持っている場合は、それを変更それに応じて。

+0

ありがとうございます。それは助けになりませんでした。ポートを変更すると、現時点でサイトがローカルホスト上に表示されているという効果がありました。しかし、まだ接続エラーがあります。 – eiwob

+0

私はアプリを起動するたびに 'vagrant ssh - mongo - use todoDB'を実行する必要がありますか?また、数週間前に私がこれらのステップを実行した後、私は 'node app.js'コマンドを実行したときに、私がまだ迷惑メールssh経由でマシンにログオンしていたことを覚えています。しかし、ログインしてみると何も起こりません。 – eiwob

+0

バックグラウンドで 'mongod'を実行していますか?これは、MongoDBをExpressアプリケーションにアクセス可能にするために必要です。 https://docs.mongodb.com/manual/reference/program/mongod/ –