【问题标题】:restful API using node not returning anything使用节点的restful API不返回任何内容
【发布时间】:2017-01-14 04:45:19
【问题描述】:

在我的 server.js 中,我这样做:-

app.post('/app/getSingleOrderDetail', function(req,res,next){
  orderController.getSingleOrderDetail(req.body.order_id);
})

然后在模型中

exports.getSingleOrderDetail = function(order_id, res, res) {
   Orders.find({'_id':order_id}).exec(function(err,result){
     console.log('result: '+result) //it's ok!!
     res.json(result);
   });
};

我期待这个 $http 在 angularjs 中调用的结果

$http({
    url: '/app/getSingleOrderDetail',
    method: "POST",
    data: {'order_id' : id}
}).then(function(response){
    console.log(response.data)
    vm.sales_detail = response.data;
}).catch(function(response) {
    alert('Error!');
    console.log(response);
});

一切都正确传递,但我无法在 angularjs 中将数据返回到客户端。

【问题讨论】:

  • 您在req.body.order_id 中得到了什么?你在result 中获得价值了吗?
  • @abdulbarik 没关系,id 是正确的

标签: javascript angularjs node.js express mongoose


【解决方案1】:

getSingleOrderDetail 中,您期待参数(order_id, res, res),但是当您调用该函数时,您只是将一个值传递给第一个参数order_id,而res 没有任何内容。此外,您已经定义了两次res,这将导致您的代码在尝试访问res 时出现问题。

你应该像这样解决这些问题

路线

app.post('/app/getSingleOrderDetail', orderController.getSingleOrderDetail);

型号

exports.getSingleOrderDetail = function(req, res) {
  let order_id = req.body.order_id;

  Orders.find({'_id': order_id}).exec(function(err,result) {
    if (err) return res.status(500).send(err);

    console.log('result: ' + result); //it's ok!!
    return res.status(200).json(result);
  });
};

顺便说一句,从您的路由名称来看,这不会被视为 RESTful,它更像是一个 RPC(远程过程调用)样式 API。

【讨论】:

  • @MariaJane 我已经清理了你的代码,并用它更新了答案
  • 为什么最后还需要return json?这里需要 res.status(200) 吗? res.json(result) 有什么问题?
  • @MariaJane 通常在 Node 中使用 return 以确保代码执行在该点停止,在大多数情况下,这被认为是一种很好的做法。如果您需要在返回响应后进行清理(例如关闭数据库连接),则不会使用 return。 res.status(200) 只是将返回 statusCode 显式设置为 200,您不一定需要它,res.json(results) 仍会返回 200。但是,我发现这种语法提高了可读性,即使它有点冗长。
  • @MariaJane 是的,它会的。但是,如果您从res.status(500).send(err); 中删除return,那么您需要在res.json(result); 之前放置一个else
  • @MariaJane 不,你没有,但是如果你没有什么要清理的,使用return 被认为是一个好习惯。
猜你喜欢
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多