在使用Angular / Express

时间:2016-01-05 18:40:32

标签: mysql angularjs node.js express

我正在使用AngularJS和NodeJS / Express设计二手车网站。数据库是MySQL(所以不是一个MEAN堆栈)。

我对Angular非常熟悉,但这是我第一次使用Express(过去我已经使用过JAX-RS)。

我没有问题,只发送一个或两个参数,例如

app.get('/api/images/:vehicleId', function (request, response) {
    images.getThumbnailImage(request, response, connection, request.params.vehicleId);
});

但我不确定如何推进多个参数,其中一些是可选的。

客户端是使用TypeScript构建的。表单数据是通过TypeScript对象收集的,但我不确定发送多个参数的最佳做法是什么。

我想到的选项是:

1)。发送对象,然后使用它来构建查询:

return this.$http({
    method: 'POST',
    url: this.API_ADDRESS + 'vehicles/',
    data: vehicleSearchModel,
    headers: {
      'Content-Type': 'application/json'
    }
  }).then((response: any) => {
    return response.data;
  });

使用body-parser从身体中检索它,即

request.body.data (or something similar)

2)。在网址中发送多个参数,即

app.get('/api/vehicles/:make/:model/:bodyStyle/:fuelType/:transmission/:minPrice/:maxPrice/:minYear/:maxYear/:counties', function (request, response) {
    //Do something with request.params!!!
});

请告知。

1 个答案:

答案 0 :(得分:0)

首先,您应该按照以下方式发出http post请求。

var data = {
    make : make,
    model : model,
    fuelType : fueltype,
....
}
return this.$http({
    method: 'POST',
    url: this.API_ADDRESS + 'vehicles/',
    data: vehicleSearchModel,
    headers: {
      'Content-Type': 'application/json'
    }
  }).then((response: any) => {
    return response.data;
  });

然后,您可以接收以下多个参数。

app.post('/api/vehicles/', function(req, res){
  var make = req.body.make;
  var model= req.body.model;
  var bodyStyle= req.body.bodyStyle;
  var fuelType= req.body.fuelType;
  var transmission= req.body.transmission;
.....
});