2016-04-06 18 views
-1

ここに私のserver.jsファイルがあります。私のget '/'ルートでは、dbが定義されていないままになっています。私はmongodbコレクションからドキュメントを取得して投稿し、最終的にドキュメントキー:値を使用してデータベースをクエリできるようにしています。何かご意見は?db in db.collection ....は定義されていません。理由はわかりません

var express = require('express'); 
var bodyParser = require('body-parser'); 
var app = express(); 
var mongoose = require('mongoose'); 

mongoose.connect('mongodb://<dbuser>:<dbpassword>@ds061355.mlab.com:61355/db'); 

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

app.get('/', (req, res) => { 
    res.sendFile(__dirname + '/index.html'); 
}); 



app.get('/:name', (req, res) => { 
    var cursor = db.collection('materials').find(); 
    db.collection('materials').find().toArray(function(err, results) { 
     console.log(results); 
    }); 

}); 

app.listen(3000,() => { 
    console.log('Running app.js on 3000'); 
}); 
+1

ここで、 'db'変数を定義しましたか? – alexmac

+1

あなたが示したコードにはどこにでも 'db'が定義されていないので、' undefined'でなければなりません – nem035

答えて

0

connectメソッドを呼び出した後、あなたはmongooseオブジェクトのconnectionプロパティを使用する必要があります。また、エラーの場合はerror、接続が正常に確立されたときはopenなどのイベントを受信する必要があります。接続がopenである場合にのみ進めてください。したがって、あなたのコードは次のようになります:

var express = require('express'); 
var bodyParser = require('body-parser'); 
var app = express(); 
var mongoose = require('mongoose'); 

mongoose.connect('mongodb://<dbuser>:<dbpassword>@ds061355.mlab.com:61355/db'); 

var db = mongoose.connection; 

db.on('error', console.error.bind(console, 'connection error:')); 

db.once('open', function callback() { 
    console.log("Connected Successfully."); 

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

    app.get('/', (req, res) => { 
     res.sendFile(__dirname + '/index.html'); 
    }); 

    app.get('/:name', (req, res) => { 
     var cursor = db.collection('materials').find(); 
     db.collection('materials').find().toArray(function(err, results) { 
      console.log(results); 
     }); 
    }); 

    app.listen(3000,() => { 
     console.log('Running app.js on 3000'); 
    }); 
}); 
+0

素晴らしい感謝!最初の試みに取り組みました。 – MattP

関連する問題