Angular $ resource сохранить объект, содержащий массивы

0

Скажем, у нас есть ресурс Person $, который выглядит так:

$scope.person = {
  name: 'Max',
  friends: [1, 2, 3]
}

Если мы предоставим Person.save($scope.person) серверу, он отправит следующие параметры:

name: 'Max'
friends: '1'
friends: '2'
friends: '3'

Поэтому у меня не будет доступа к массиву friends на сервере. Только последний элемент был бы доступен.

Каков правильный способ сохранения объектов, содержащих массивы на сервер, с помощью $resource?


PS Я знаю действительно Hacky способом, который является переименование friends приписывать friends[], но это не решает мою проблему, так как у меня есть много из них, и я не могу пойти с переопределение свойства вперед и назад

Теги:
rest

1 ответ

1
Лучший ответ

Из документации:

non-GET "class" actions: Resource.action([parameters], postData, [success], [error])

Поэтому вы должны использовать:

Person.save(null, $scope.person)

(первый аргумент - объект с параметрами url, второй - данные для отправки)

Тогда ваш массив друзей будет доступен в теле запроса.

Также обратите внимание, что если у вас есть ресурс пользователя, вы можете:

var person = $resource(...);
person.name = 'john';
person.friends = ['friend1' ,'friend2'];
person.$save();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню