2017-11-09 30 views
0

私はMongo DB、Mongoose、Node JSを学習しています。ノードJSをローカルMongo DBに接続できないようです。ノードJSからmongoローカルDBに接続できません

dbtest.js私は、API /ドスGET要求を呼び出すと、ステータスJSONオブジェクトは、私はデータベースに接続できないことができることを意味し、返され

var express = require('express'); 
    var app  = express();        // create our app w/ express 
    var mongoose = require('mongoose');      // mongoose for mongodb 
    var morgan = require('morgan');    // log requests to the console (express4) 
    var bodyParser = require('body-parser'); // pull information from HTML POST (express4) 
    var methodOverride = require('method-override'); // simulate DELETE and PUT (express4) 

    var options = { 
      useMongoClient: true, 
      autoIndex: false, // Don't build indexes 
      reconnectTries: Number.MAX_VALUE, // Never stop trying to reconnect 
      reconnectInterval: 500, // Reconnect every 500ms 
      poolSize: 10, // Maintain up to 10 socket connections 
      // If not connected, return errors immediately rather than waiting for reconnect 
      bufferMaxEntries: 0 
}; 



    var Todo = mongoose.model('Todo', { 
     text : String 
    }, 'test'); 

    var status = { 
    "status": "not connected" 
    }; 

    app.get('/api/todos', function(req, res) { 

      mongoose.connect('mongodb://127.0.0.1:27017/exampleDB',options,function(err) 
    { 
       if (err) { 
       res.json(status); 
      } else { 
       res.json('Connected'); 
      }  
    }); 
    }); 

    app.listen(8080); 
    console.log("App listening on port 8080"); 

は、ここに私のコードです。

JSON Message

私は完全にMongoDB Enterprise Serverの3.14.10をインストールし、それが実行されているが、私のNodeJSアプリケーションが接続できない理由を私は知りません。

ご迷惑をおかけして申し訳ございません。

+0

あなたの 'res.json(status)'の代わりに 'res.json({err})'を実行して、実際に何がエラーであるかを調べます。 –

+0

これはあなたのコメントごとにコードが変更された後のエラーです:{"err":{"state":2}} – Joseph

+0

'console.log(err)'に追加すると、その出力がコンソールに表示されます。あなたの質問に「テキスト」(スクリーンショットではない)を貼り付けてください。あなたが誰に言っているよりも詳細があるでしょう。 –

答えて

0

あなたの最初のmongoose.connect()の引数は、ユーザー名/パスワードの組み合わせを欠い:

mongoose.connect('mongodb://username:[email protected]:27017/exampleDB'); 
+0

私は実際にMongoDBコンパスにユーザー名とパスワードを入力せずに接続できるので、ここで何が間違っているのだろうかと思います。 – Joseph

0

は、任意のアクションを実行する前に、最初のDBを接続してみます。接続したら、カスタム関数の内部で使用しようとします。以下のコードは、ローカルデータベースのテストに役立ちます。

const express = require('express'); 
const app = express(); 
const port = 3000; 
const mongoose = require('mongoose'); 

mongoose.connect('mongodb://localhost:27017/dbname', { useMongoClient: true }); 
mongoose.connection.on('connected',() => { 
    console.log('Connected to database '); 
}); 
mongoose.connection.on('error', (err) => { 
    console.log('Database error: '+err); 
}); 


// Start Server 
app.listen(port,() => { 
    console.log('Server started on port '+port); 
}); 

コンソールを確認するには、cmdウィンドウを確認してください。

+0

ローカルデータベースの場合、MongoDBコンパスはデフォルトでデフォルトのポートでユーザ名とパスワードなしで受け入れます。他のデータベースで提供しなければならない –

+0

あなたのコードを別のjsファイルで試しましたが、Server起動ログだけが返されました。 「接続済み」または「エラー」のログはありません。 – Joseph

関連する問題