我正在使用服务返回文件列表。此服务返回以下内容。
成功案例:json格式的文件对象列表,如下所示,HTTP代码为200
[{"_id:"3453534","name":"File 1"},{"_id:"5756753","name":"File 2"}]
失败案例:返回错误响应,错误消息为HTTP错误代码500。
{errorMessage: "No files found for ptoject id 522b9358e4b0bab2f88a1f67"}
我正在使用以下“query”方法调用此服务。
//get the new value of files as per changed project id
scope.files = ProjectFile.query({ projectid: scope.project._id }, function (response) {
//Check if service response is success/fail
if (response.servicestatus != undefined) {
//this is error case. Show error message.
alert("Failed to load list of files for this project: " + response.errorMessage);
}
else {
//update scope
scope.files = response;
}
});
我面临的问题是由$ query()方法转换的响应对象。我得到响应作为一个似乎不正确的数组。不确定为什么$ query()也期望错误响应为数组。在错误的情况下;我得到的响应如下所示
response[0][0]="N";
response[0][1]="o";
response[0][2]="";
response[0][3]="f";
response[0][4]="i";
response[0][5]="l";
response[0][6]="e";
response[0][7]="s";
....
....
我不确定为什么$ query()表现得像这样。不确定如何以正确的方式处理它。请帮忙。
答案 0 :(得分:0)
$ resource的查询方法默认情况下将响应视为数组。查询没有失败,但是来自服务器的响应没有提供query()所期望的。
如果您知道只有“无文件”响应不是数组,那么您可以检查响应类型是否为数组,以便知道是否找到了任何内容。
This answer概述了一种简便的方法:
scope.files = ProjectFile.query({ projectid: scope.project._id }, function (response) {
//Check if service response is success/fail
if (response.servicestatus != undefined) {
//this is error case. Show error message.
alert("Failed to load list of files for this project: " + response.errorMessage);
}
else if ( Object.prototype.toString.call(response) === '[object Array]' ) {
scope.files = response;
} else {
//handle the lack of files found
}
}