2016-11-23 105 views
0

我在Node.js中開發了一個簡單的rest API,它工作得很好。 這是我的控制器代碼:Node.js在api中沒有正確顯示結果狀態

... 
exports.listById = function(id, callback) { 
     Course.findById(id, function(err, courses){ 
      if(err){ 
       callback({error: 'Not Found'}); 
      } 
      else{ 
       callback(courses); 
      } 
     });   
    } 

這是我的路線:

app.get('/courses/:id', function(req, res){ 
     var id = req.params.id; 
     courseController.listById(id, function(resp){ 
      res.status(200).json(resp);         
     }); 
    }); 

此代碼的工作和我的收藏MongoDB中的顯示效果。 但下面的代碼,並沒有顯示出與郵差結果:

app.get('/courses/:id', function(req, res){ 
      var id = req.params.id; 
      courseController.listById(id, function(err, resp){ 

      if(err){ 
        res.status(404).send(err); 
       } 
       else{ 
        res.status(200).json(resp); 
       }         
      }); 
     }); 

回答

1
exports.listById = function(id, callback) { 
    Course.findById(id, function(err, courses){ 
     if(err) 
      return callback(new Error('Not Found')); // You must return Error by standard 

     callback(null, courses); // You must set first argument (error) to null 
    });   
} 
... 
// You can check that id is number 
app.get('/courses/:id(\\d+)', function(req, res, next) { 
    var id = req.params.id; 
    courseController.listById(id, function(err, resp) { 

    if(err) 
     return next(err); // Pass error to error-handler (see link below) 

    res.status(200).json(resp); 
}); 
+0

它工作正常!謝謝! –

1
回調函數

最佳做法是第一個參數錯誤而第二次作爲result.You應該

exports.listById = function (id, callback) { 
    Course.findById(id, function (err, courses) { 
     if (err) { 
      callback(error); 
     } 
     else { 
      callback(null, courses); 
     } 
    }); 
} 

,而你路線應該看起來像這樣:

app.get('/courses/:id', function (req, res) { 
    var id = req.params.id; 
    courseController.listById(id, function (error, courses) { 
     if (error) return res.status(500) // internal server error 

     // if I remember correctly, sources is empty array if course not found 
     res.status(200).json(resp); 
    }); 
}); 
+0

它工作正常!謝謝! –

相關問題