Я пытаюсь включить функцию, в которой пользователи могут быть найдены на основе нескольких тегов (массив тегов), используя следующую структуру:
GET '/tags/users?tag[]=test&tag[]=sample'
Я работаю над своим узловым сервером и успешно протестировал его с помощью Postman. Проблема, с которой я сталкиваюсь, заключается в том, как структурировать этот GET
в моей службе Angular, используя $resource
. Я нашел документацию для $http
о том, что добавление params:{'tag[]': tag}
в объект запроса будет делать трюк, но не может найти что-либо в отношении $resource
.
В угловом выражении вы можете передать массив в виде строки запроса, используя $resource
В контроллере:
angular.module('myApp').controller('userController',['$scope','userService', '$location',
function($scope, userService, $location){
$scope.searchQuery = {};
$scope.SearchUsers = function() {
$scope.roles = ['admin', 'register', 'authenticate'];
$scope.searchQuery.name ='xxx';
$scope.searchQuery['roles[]'] = $scope.roles;
userService.searchUsers($scope.searchQuery)
.$promise.then(function (response) {
$scope.users = response.users;
});
};
}
]);
В сервисе:
angular.module('myApp').factory('userService', ['$resource',
function($resource) {
return {
searchUsers: function(searchQuery){
var searchRequest = $resource('/auth/search/user', {}, {
'get': {method: 'GET'}
});
return searchRequest.get(searchQuery);
}
};
}
]);
URL запроса:
/auth/search/users?name=xxx&roles%5B%5D=admin&roles%5B%5D=register&roles%5B%5D=authenticate
вы получаете %5B%5D
вместо []
в своем запросе url
и если вы ожидаете вернуть array
вместо object
тогда вы должны использовать
'get': {method: 'GET', isArray: true}