【问题标题】:NgResource get call for requesting a mapNgResource 获取请求地图的调用
【发布时间】:2016-09-14 17:49:50
【问题描述】:

我正在做一个小应用程序,昨天我意识到这件事我无法真正理解。

我的控制器在 Java 中侦听请求,它返回一个具有多个值的 Map。但是,当我在控制器中使用 ngResource 时,我调用的是 .get() 方法而不是 .query() 方法,然后在视图上我可以使用类似 @987654321 的方法迭代使用 .get() 获得的响应@ . query() 不应该是针对数组的,而 get() 不是针对一个对象的吗?

有人可以解释一下吗?谢谢

编辑所以,我从 {"1":"PRUEBA","2":"HOLA"} 接收的 json 是这个,如果我使用 .query() 我会收到以下错误:

操作 Error in resource configuration for action{0}. Expected response to contain an {1} but got an {2} (Request: {3} {4}) 的资源配置错误。预期的响应包含一个 查询但得到一个数组(请求:对象GET)

所以,我仍然不明白为什么我需要一个 .get 如果我得到一个数组...

【问题讨论】:

    标签: javascript java angularjs json ngresource


    【解决方案1】:

    默认情况下查询返回一个数组而get不返回

      { 'get':  {method:'GET'},
      'save':   {method:'POST'},
      'query':  {method:'GET', isArray:true},
      'remove': {method:'DELETE'},
      'delete': {method:'DELETE'} };
    

    您可以使用不同的 url 覆盖 get 或创建其他函数并将 isArray 设置为 true:

      angular.module('myModule').factory('myResourceFactory', function($resource, apiHost) {
      return $resource(apiHost + '/myresources/:myresourceId', null, {
            'query': { method:'GET', url: apiHost + '/myresources/:myresourceId/somethings',isArray: true}
        }); 
    });
    

    查询方法需要一个数组 [{obj1},{obj2}]

    get 方法需要一个对象 {"1":"PRUEBA","2":"HOLA"}

    在您的情况下,您应该使用 get() 方法。

    【讨论】:

    • 好吧,我明白了,但是我的 Java 控制器在地图上返回两个值,我通过 apiHos.myFunction().get() 调用服务。如果我使用 apiHos.myFunction().query 我会得到一个错误。我想如果我想返回一个地图对象,我应该做 .query() 一个,但是不,这就是我不太明白的......也许我搞砸了?哈哈
    • 使用查询时遇到的错误是什么?你能给我一个你的api返回结果的例子吗?
    • 当然...但是我现在不在代码前面...我会尽快编辑问题,谢谢@Mayk!!!
    • 我刚刚编辑过,如果需要更多信息,请告诉我,谢谢
    猜你喜欢
    • 2013-09-10
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2020-08-16
    • 1970-01-01
    • 2014-02-03
    相关资源
    最近更新 更多