使用getList()获取包含响应数组的对象

时间:2014-12-17 20:06:08

标签: restangular

我的服务器的REST API响应GET对包含以下对象的故事请求:

bookmark: "g1AAAAEoeJzLYWBgYMlgTmFQSklKzi9KdUhJMjTQy83PzyvOyMxL1UvOyS9NScwr0ctLLckBqmVKZEiy____fxaY4-a0KbA8-7lHcaJQFsgQRbghRvjMSHIAkkn1qMbEBG0VT-RFM8YMnzF5LECSoQFIAU3ajzCqaMqJzw8SedCMMids1AGIUf-RjTrdMTGRMysLAOQyZD8"
rows: [{id: "IPc3JoAvxHJt426ULI8Qwg", order: [20141108190902.652, 21],…},…]
total_rows: 12

我正在使用Restantular的getList()来获取故事,以及自定义响应拦截器将响应对象转换为一系列故事。我的响应拦截器看起来像这样:

    RestangularProvider.addResponseInterceptor(function (data, operation, what, url, responses, deferred) {
      if(operation !== "getList") return data;
      var response = jQuery.map(data.rows, function(row, i){
                        return (row.doc);
                     });
      return response;  
    });

但是,现在我发现我需要访问服务器响应中的bookmarktotal_rows属性。我知道getList()每当要求返回对象而不是数组时都会抛出错误。所以我不能在我的响应拦截器中返回这样的东西:

return { data:data, stories:response } 

使用Restangular获取故事列表和其他属性的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

这是我现在用来解决这个问题的responseInterceptor的一个例子:

    RestangularProvider.addResponseInterceptor(function (data, operation, what, url, responses, deferred) {

       if(operation !== "getList") return data;

       var response;

       response = jQuery.map(data.rows, function(row, i){
                     return (row.doc);
                  });
       response.meta = { total_rows: data.total_rows, bookmark: data.bookmark };

       return response; 

});