【问题标题】:NodeJS Express REST API get request returns emptyNodeJS Express REST API 获取请求返回空
【发布时间】:2018-03-15 22:46:16
【问题描述】:

我正在尝试使用 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);
    });
  }

这里缺少什么?

【问题讨论】:

    标签: javascript node.js rest express mongoose


    【解决方案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() 的结果在任务变量中,这就是您要发送回客户端的结果。

    【讨论】:

    • 你能解释一下你做了什么改变吗?解释为什么将正确的答案变成了很好的答案
    • @SterlingArcher 你说得对,我已经解释了我的答案;-)
    【解决方案2】:

    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);
        });
      }
    

    【讨论】:

      【解决方案3】:

      为什么要发送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
      });
      

      【讨论】:

        猜你喜欢
        • 2015-11-16
        • 2016-07-05
        • 1970-01-01
        • 1970-01-01
        • 2017-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-16
        相关资源
        最近更新 更多