2016-04-06 74 views
-1

這是我的server.js文件。在我的'/'路線中,我一直在獲取db沒有定義。我試圖從mongodb集合中發佈檢索文檔,並最終讓用戶能夠使用文檔鍵值:查詢數據庫。有什麼想法嗎?分貝在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

相關問題