Скажем, у нас есть ресурс 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[]
, но это не решает мою проблему, так как у меня есть много из них, и я не могу пойти с переопределение свойства вперед и назад
Из документации:
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();