2016-01-04 33 views
3

當我執行API http://localhost:8080/api/bears POST貓鼬.save()不是沒有回調工作

控制被映射後的路線,並配備對.save()後,它不會返回「ERR」回調。

我試過兩個數據庫的全局貓鼬連接,但沒有幫助。

server.js

// BASE SETUP 
// ============================================================================= 

// call the packages we need 
var express = require('express'); 
var bodyParser = require('body-parser'); 
var app  = express(); 
var morgan  = require('morgan'); 

// configure app 
app.use(morgan('dev')); // log requests to the console 

// configure body parser 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

var port  = process.env.PORT || 8080; // set our port 

var mongoose = require('mongoose'); 
//mongoose.connect('mongodb://node:[email protected]us.modulusmongo.net:27017/Iganiq8o'); // connect to our database 
mongoose.connect('mongodb://zohaibusr:[email protected]:39115/zohaibdb'); // connect to our database 

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

// ROUTES FOR OUR API 
// ============================================================================= 

// create our router 
var router = express.Router(); 

// middleware to use for all requests 
router.use(function(req, res, next) { 
    // do logging 
    console.log('Something is happening.'); 
    next(); 
}); 

// test route to make sure everything is working (accessed at GET http://localhost:8080/api) 
router.get('/', function(req, res) { 
    res.json({ message: 'hooray! welcome to our api!' }); 
}); 

// on routes that end in /bears 
// ---------------------------------------------------- 
router.route('/bears') 

    // create a bear (accessed at POST http://localhost:8080/api/bears) 
    .post(function(req, res) { 

     var bear = new Bear();  // create a new instance of the Bear model 
     bear.name = req.body.name; // set the bears name (comes from the request) 

     bear.save(function(err) { 
      if (err) 
       res.send(err); 

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


    }) 

    // get all the bears (accessed at GET http://localhost:8080/api/bears) 
    .get(function(req, res) { 
     Bear.find(function(err, bears) { 
      if (err) 
       res.send(err); 

      res.json(bears); 
     }); 
    }); 

// on routes that end in /bears/:bear_id 
// ---------------------------------------------------- 
router.route('/bears/:bear_id') 

    // get the bear with that id 
    .get(function(req, res) { 
     Bear.findById(req.params.bear_id, function(err, bear) { 
      if (err) 
       res.send(err); 
      res.json(bear); 
     }); 
    }) 

    // update the bear with this id 
    .put(function(req, res) { 
     Bear.findById(req.params.bear_id, function(err, bear) { 

      if (err) 
       res.send(err); 

      bear.name = req.body.name; 
      bear.save(function(err) { 
       if (err) 
        res.send(err); 

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

     }); 
    }) 

    // delete the bear with this id 
    .delete(function(req, res) { 
     Bear.remove({ 
      _id: req.params.bear_id 
     }, function(err, bear) { 
      if (err) 
       res.send(err); 

      res.json({ message: 'Successfully deleted' }); 
     }); 
    }); 


// REGISTER OUR ROUTES ------------------------------- 
app.use('/api', router); 

// START THE SERVER 
// ============================================================================= 
app.listen(port); 
console.log('Magic happens on port ' + port); 

熊架構

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

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

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

編輯:添加截圖

enter image description here

+0

旁註這裏,不只是使用'res.send(錯誤)'而是'res.status(500)。發送(ERR)'。 – Louy

+0

好的,謝謝你會記住這一點。然而,控制權並沒有涉及到這一方面。 – Zohaib

+0

你確定Mongoose可以實際連接到數據庫嗎? – robertklep

回答

0

你應該改爲使用Model.create

Bear.create({name: req.body.name}, function(err, bear) { 
     if (err) 
      res.send(err); 

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

試過,但是問題仍然存在,如果(錯誤)..控制不能到達線路,並且該呼叫仍在執行。 – Zohaib

+0

請檢查附加的截圖 – Zohaib

2

我想出了我的錯誤。

建立的連接是錯誤的。

我使用了一個快速啓動全球蒙戈DB從mongolab.com

但是當地建立之後。它的工作

mongoose.connect('mongodb:// localhost:27017/zohaibdb');

enter image description here