Hudvoy Hudvoy - 2 months ago 8
Javascript Question

$resource.query return split strings (array of char) instead of a string

I am using a angular $resource like the one below.

.factory('data', function ($resource) {

var Con = $resource('/api/data', {}, {
update : {method : 'PUT'}

return {

getData : function (user_id, callback) {

return Con.query({user_id : user_id}, function (data) {
cb(data); // (breakpoint) HERE data is not good
}, function (err) {


This is what I get when a put a breakpoint on data :


howerver, the server sends :


anyone know why the strings get split?

Thank you

Answer Source

You've run into a fun bug with angular's $resource where it cannot handle a raw array of strings; as a workaround, you can do one of three things:

  • use the $http service instead
  • send an object-wrapped response via the server eg: { "stuff" : [ "your", "strings" ] }
  • force the response data into the above format client-side; $resource eg: methodName: {method:'GET', url: "/some/location/returning/array", transformResponse: function (data) {return {list: angular.fromJson(data)} }} and then access it as data.list

See my answer at