NodeJS Express REST API获取请求返回为空

时间:2017-10-04 13:47:36

标签: javascript node.js rest express mongoose

我正在尝试使用NodeJS和Express构建REST API。我为offers创建路由,当我尝试发送GET请求时,我得到200状态代码的空响应

routes.js

  router.get('', passport.authenticate('jwt', { session: true}), OfferController.getOffers);

offerController.js

  exports.getOffers = function(req, res) {
    Offer.find({}, function(err, task) {
      if (err){
        return res.send(err);
      }
      res.json(Offer);
    });
  }

这里缺少什么?

3 个答案:

答案 0 :(得分:1)

怎么样:

exports.getOffers = function(req, res) {
    Offer.find({}, function(err, task) {
      if (err){
        return res.send(err);
      }
      // Change this line from res.json(Offer) to:
      res.json(task);
    });
  }

Offer.find()的结果是在任务变量中,这是您要发送回客户端的内容。

答案 1 :(得分:0)

Offer是一个猫鼬模型,你无法将其发回。并且您不需要返回它,因为它是异步的。

使用此结构:

exports.getOffers = function(req, res) {
    Offer.find({}, function(error, result) {
        var myRes = {};
        if(error){
            myRes.error = error;
            myRes.error.message = "Error..."
        }else{
            myRes.data = result;
        }
        res.send(myRes);
    });
  }

答案 2 :(得分:0)

为什么要发送Offer

您应该发送Offer.find({})的输出,即task

因此,res.send(task)应该是错误条件之后的语句。它看起来像是:

exports.getOffers = function(req, res) {
  Offer.find({}, function(err, task) {
    if (err){
      return res.send(err);
    }

    res.json(task); //this
});