使用节点不返回任何内容的restful API

时间:2016-09-06 16:34:07

标签: javascript angularjs node.js express mongoose

在我的 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);
   });
};

我期待在angularjs中调用此$http

的结果
$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中的客户端。

1 个答案:

答案 0 :(得分: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。