"Error: [$resource:badcfg] Error in resource configuration for action `get`. Expected response to contain an object but got an array
"Error: [$resource:badcfg] Error in resource configuration for action `get`. Expected response to contain an object but got an array
我尝试查找具有指定 contactPersonId 的联系人。
查找联系人的有效状态是:
.state("contactDetail", {
url: "/contacts/:id",
templateUrl: "app/contacts/contactDetailView.html",
controller: "ContactDetailController as viewModel",
resolve: {
contactResource: "contactResource",
contact: function(contactResource, $stateParams){
var id = $stateParams.id;
return contactResource.get({id: id}).$promise;
}
}
})
现在,当我尝试对其中具有特定 ID 的联系人的联系人进行更高级的搜索时,我尝试使用此:
.state("contactPersonDetail", {
url: "/contactPerson/:id",
templateUrl: "app/contacts/contactPersonDetailView.html",
controller: "ContactPersonDetailController as viewModel",
resolve: {
contactResource: "contactResource",
contactPersoon: function(contactResource, $stateParams){
var id = $stateParams.id;
var contacts = contactResource.get();
var contact;
for(var i = 0; i < contacts.length; i++){
if(contacts[i].contactPerson.id == id){
contact = contacts[i].contactPerson;
break;
}
}
return contact.$promise;
}
}
})
当我点击联系人查看其详细信息时,出现此错误:
"Error: [$resource:badcfg] Error in resource configuration for action get
. Expected response to contain an object but got an array (Request: GET http://--url--/api/contacts/)
我的问题是:
我什至有可能尝试这样做吗?
如果是,有什么问题?
如果不是,应该怎么办?
在 $resource
的文档中,请参阅操作下的这一行:
isArray – {boolean=} – If true then the returned object for this action is an array, see returns section.
基本上,您需要指定您的后端是要return一个对象还是一个数组,以便它知道如何处理数据。
更新:重新阅读您的评论后,您似乎误解了 get()
在提供 id
与不提供 id
时的作用。
在没有看到您的 url 的情况下,我假设您正在调用您的后端:
http://--url--/api/contacts/
&
http://--url--/api/contacts/<contact_id>
很可能第一个 url return 是一个包含 所有 联系人的数组(因此您可以遍历结果)。其中第二个 url 将只是 return 一个联系人对象。
这就是为什么对于其中一个调用,您需要指定 isArray: true
。
我尝试查找具有指定 contactPersonId 的联系人。
查找联系人的有效状态是:
.state("contactDetail", {
url: "/contacts/:id",
templateUrl: "app/contacts/contactDetailView.html",
controller: "ContactDetailController as viewModel",
resolve: {
contactResource: "contactResource",
contact: function(contactResource, $stateParams){
var id = $stateParams.id;
return contactResource.get({id: id}).$promise;
}
}
})
现在,当我尝试对其中具有特定 ID 的联系人的联系人进行更高级的搜索时,我尝试使用此:
.state("contactPersonDetail", {
url: "/contactPerson/:id",
templateUrl: "app/contacts/contactPersonDetailView.html",
controller: "ContactPersonDetailController as viewModel",
resolve: {
contactResource: "contactResource",
contactPersoon: function(contactResource, $stateParams){
var id = $stateParams.id;
var contacts = contactResource.get();
var contact;
for(var i = 0; i < contacts.length; i++){
if(contacts[i].contactPerson.id == id){
contact = contacts[i].contactPerson;
break;
}
}
return contact.$promise;
}
}
})
当我点击联系人查看其详细信息时,出现此错误:
"Error: [$resource:badcfg] Error in resource configuration for action
get
. Expected response to contain an object but got an array (Request: GET http://--url--/api/contacts/)
我的问题是: 我什至有可能尝试这样做吗? 如果是,有什么问题? 如果不是,应该怎么办?
在 $resource
的文档中,请参阅操作下的这一行:
isArray – {boolean=} – If true then the returned object for this action is an array, see returns section.
基本上,您需要指定您的后端是要return一个对象还是一个数组,以便它知道如何处理数据。
更新:重新阅读您的评论后,您似乎误解了 get()
在提供 id
与不提供 id
时的作用。
在没有看到您的 url 的情况下,我假设您正在调用您的后端:
http://--url--/api/contacts/
&
http://--url--/api/contacts/<contact_id>
很可能第一个 url return 是一个包含 所有 联系人的数组(因此您可以遍历结果)。其中第二个 url 将只是 return 一个联系人对象。
这就是为什么对于其中一个调用,您需要指定 isArray: true
。