2015-01-05 37 views
0

我正在构建一个Angular应用程序,该应用程序与提供包装在根密钥中的资源的服务器进行通信。

换句话说,对GET /api/posts的请求给出了JSON响应{ posts: [ ... ] }

类似地,单个资源请求也包含在一个根密钥中,以致GET /api/post/1返回沿着{ post: {title: "Title"} }的行。

我想用$resource来处理这些获取资源,并建立了具有典型的线厂:

$resource('/api/posts/:id', {id: '@id'})

但自然,因为它不希望有这将无法工作寻找一个根密钥,并期待一个数组,而不是一个对象查询时,等

我想知道是否有一个相对简单的方法来使这个透明的$resource,以便它可以正常使用。我试着寻找解决方案,但找不到与此特定案例相关的任何内容。这是完全可能的,我错过了$resource文档中痛苦明显的东西,但我似乎无法弄清楚。任何帮助将不胜感激!

+1

如果您的Web API正在返回单个项目,您可以创建自己的资源查询方法,以简单覆盖isArray:false。你尝试过吗? – Patrick

+0

好的电话...我想这是错误的方式。我可以覆盖isArray,然后返回键的值,以满足需要 – ZakThompson

回答

0

这个问题的解决方案比我想的要容易。正如Patrick在他的评论中所建议的那样,这只是覆盖query方法以具有isArray: false,然后手动拔出密钥。在实践中,它看起来是这样的:

$resource('/api/posts/:id', {id: '@id'}, {query: {method: 'GET', isArray: false}}) 

... 

$resource.query({}, function(response) { 
    posts = response.posts; 
    // Do whatever with posts 
}) 

,如果有一种方法来居然有$resource.query()只返回根密钥的价值我一直纳闷,不过这没有什么意义和是不必要的。

+0

response.posts不会是ngResource的一个实例,但不能使用像$ save这样的实例方法? –

相关问题