0

ファイルのリストを返すサービスを使用しています。このサービスは以下を返します。

成功例: 以下に示す json 形式のファイル オブジェクトのリスト (HTTP コードは 200)

[{"_id:"3453534","name":"File 1"},{"_id:"5756753","name":"File 2"}]

失敗した場合: HTTP エラー コード 500 としてエラー メッセージを含むエラー応答が返されます。

{errorMessage: "No files found for ptoject id 522b9358e4b0bab2f88a1f67"}

このサービスを呼び出す次の「クエリ」メソッドを使用しています。

//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() がこのように動作する理由がわかりません。正しい方法で処理する方法がわからない。助けてください。

4

1 に答える 1

0

$resource のクエリ メソッドは、デフォルトで応答を配列として期待します。クエリは失敗していませんが、サーバーからの応答は query() が期待するものを提供していません。

「ファイルなし」応答のみが配列にならないことがわかっている場合は、何かが見つかったかどうかを知るために、応答タイプが配列であるかどうかを確認できます。

この回答は、確認する簡単な方法の概要を示しています。

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
  }
}
于 2013-09-07T22:10:12.423 に答える