(Angular JS)如何过滤$http.如果响应是JSON对象数组,则通过传递参数获取

(Angular JS) How filter $http.get by passing params if the response is an array of JSON objects?

本文关键字:数组 对象 获取 参数 JSON 响应 何过滤 JS Angular 过滤 如果      更新时间:2023-09-26

我正在向我的REST api发出$http GET请求以获取项目列表。我想做的是使用param选项过滤响应,只获得分配给特定人员的项目。

var config = {
  withCredentials: true,
  params: {
    AssigneeId: 12423
  }
};
$http.get(baseUrl + 'projects', config).then(function successCallback(response) {
  //do things on success
}, function errorCallback(response) {
  //do things on error
});

AssigneeId字段是project对象的属性。我遇到的问题是,$http.get的响应是JSON对象的数组,使param无用。我的回复看起来像这样:

[{
  ProjectName: 'project 1',
  AssigneeId: 12311,
  size: 5
}, {
  ProjectName: 'project 2',
  AssigneeId: 15232,
  size: 4
}, {
  ProjectName: 'project 3',
  AssigneeId: 43123,
  size: 2
}, {
  ProjectName: 'project 4',
  AssigneeId: 12423,
  size: 6
}]

我想用param做的是只得到'project 4'作为对我的GET请求的响应。我认为它不工作,由于响应是一个数组?还是我做错了什么?

正如@Kevin B所提到的,它必须得到服务器的支持。你需要和你的服务人员谈谈来解决这个问题,或者传递正确的参数。直到你的服务生把这个修好。你可以输入这个新代码

var assigneeId = 12423;
var config = {
  withCredentials: true
};
$http.get(baseUrl + 'projects', config )
 .then( successCallback(response){
   var assignedProject = response.filter(function(o){
     return o.AssigneeId === assigneeId; 
   }).map(function(o){
     return o.ProjectName;
   })[0];
 }, errorCallback(response){
    //do things on error
 }

您可以在收到响应时进行过滤。

response = response.filter(function(a) {
  return a.AssigneeId === config.params.AssigneeId;
}).map(function(a) {
  return a.ProjectName;
})[0];