2016-04-04 57 views
0

我正在嘗試使用mongoose和mongolab編寫API。使用node.js和mongoose連接到mongolab時出錯

這裏是我的代碼:

./index.js

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

mongoose.connect('mongodb://user:[email protected]****.mlab.com:*****/****'); 

var Bear = require('./app/models/bear'); 

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



var port = process.env.PORT || 8080; 

var router = express.Router(); 

router.use(function(req, res, next){ 
    console.log('request called'); 
    next(); 
}); 

router.get('/', function(req, res) { 
    res.json({ message: 'in /' }); 
}); 

router.route('/bears') 

    .post(function(req, res) { 

     var bear = new Bear();  
     bear.name = req.body.name; 
     console.log(bear.name); 
     bear.save(function(err) { 
      console.log('in save') 
      if (err) 
       res.send(err); 

      res.json({ message: 'Bear created!' }); 
     }); 

    }); 

app.use('/api', router); 

app.listen(port); 
console.log('connected to port ' + port); 

./app/models/bear.js

var mongoose  = require('mongoose'); 
var Schema  = mongoose.Schema; 

var BearSchema = new Schema({ 
    name: String 
}); 

module.exports = mongoose.model('Bear', BearSchema); 

我的問題是,當我嘗試以下請求時:

postman

它不返回任何東西。我試圖在console.slog中安裝console.log,但永遠無法進入。

我不明白我做錯了什麼。另外當我嘗試從我的終端連接到我的mongolab分貝時,它工作得很好。

+0

'console.log(bear.name);'記錄任何東西到控制檯? –

+0

是的!它顯示「toto」 – ZeenaZeek

+0

與'err'一起,將'bear'傳遞給回調函數。像這樣: 'bear.save(function(err,bear){...})'。看看是否有幫助。 –

回答

0

您的index.js存在問題。在這裏,使用這段代碼:

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 
var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost:27017/test'); 
var Bear = require('./bear'); 
app.use(bodyParser.urlencoded({ 
    extended: true 
})); 
app.use(bodyParser.json()); 
var port = process.env.PORT || 8080; 
var router = express.Router(); 
router.use(function (req, res, next) { 
    console.log('request called'); 
    next(); 
}); 
router.get('/', function (req, res) { 
    res.json({ 
     message: 'in /' 
    }); 
}); 
/*router.route('/bears')*/ 
    router.post('/bears', function (req, res) { 
     console.log("request: " + JSON.stringify(req.body)); 
     var bear = new Bear(); 
     bear.name = req.body.name; 
     console.log(bear.name); 
     bear.save(function (err) { 
      console.log('in save') 
      if (err) 
       res.send(err); 
      res.json({ 
      message: 'Bear created!' 
     }); 
    }); 
}); 
app.use('/api', router); 
app.listen(port); 
console.log('connected to port ' + port); 
+0

我得到了一個TypeError:將圓形結構轉換爲JSON 無論如何,我不明白你改變了什麼?如果我刪除console.log(「請求:」+ JSON.stringify(req));我沒有這個錯誤,但它仍然沒有返回 – ZeenaZeek

+0

你看到了嗎?這是問題所在。現在再試一次。 'console.log(「request:」+ JSON.stringify(req.body));'這是我們需要記錄的東西。 –

+0

最初不知道你爲什麼要做'router.route('/ bears')。post(function(req,res){....})''。這就是我所評論的。並將其更改爲'router.post('/ bears',function(req,res){....}' –