2016-11-01 1 views
0

私はMEAN Webアプリケーションを構築しています。平均スタック(角材料付き) - javascript配列のxhr応答を変換

私はエクスプレス側のルートを処理し、私は、次のしている:

router.get('/list', function(req, res) { 
    Fruit.find(function(err, fruits) { 
     if(err) 
      handleError(res, err.message, "Could not retrieve fruit list"); 
     else 
      res.status(200).json(fruits); 
    }); 
} 

フルーツ以下のように構築Mongoの文書である:

{ 
    « _id »: ObjectId, 
    « name »: String 
} 

私は機能を使用しようとしています私の角度コントローラから

function loadFruits() { 
      var promise = $http.get("/list"); 
      var tmp = promise.then(function(response) { 
       return response.data; 
      }); 
    return tmp; 
} 

フロントエンド側では、次のように定義します。果物のリストを開きますが、私はresponse.dataをjavascript配列にキャストできません。

Google Chrome Inspectorを使用して応答を調べると、応答がxhrタイプであることがわかります。

は、私のようないくつかのことを試してみました: - >それは)オブジェクトがすでに

  • angular.fromJSONを(解析されているように見えるので、エラーを返します -

    • JSON.parse()>作ることができますそれは、より精度について など

    を働く、ここでXHR応答はインスペクタで次のようになります。

    [{"_id":"581757f66c9e4c768c8eb648","name":"fruit1"}, 
    "_id":"581758146c9e4c768c8eb649","name":"fruit2"}, 
    "_id":"5817582c6c9e4c768c8eb64a","name":"fruit3"}] 
    

    フロントエンドで使用できるjavascript配列にresponse.dataをどのように簡単に変換できますか?

    インスペクタのプレビューは、私に異なる表現を与える:

    [{_id: "581757f66c9e4c768c8eb648", name: "fruit1"},…] 
    0 
    : 
    {_id: "581757f66c9e4c768c8eb648", name: "fruit1"} 
    1 
    : 
    {_id: "581758146c9e4c768c8eb649", name: "fruit2"} 
    2 
    : 
    {_id: "5817582c6c9e4c768c8eb64a", name: "fruit3"} 
    

    おかげでたくさん!私は

    var promise = $http.get("/api/sports/list"); 
        var tmp = promise.then(function(response) { 
         return response; 
        }); 
    

    tmp variable

  • +0

    AMとは関係がないので、「角度材料」タブを削除しました。希望は大丈夫です。 –

    +0

    応答オブジェクト自体がすでに配列であり、代わりにresponse.dataを返す可能性はありますか? .. – Roberto14

    +0

    Roberto、レスポンスオブジェクトのコンテンツのスクリーンショットを投稿しました –

    答えて

    0

    は****更新ここ**** は、私は、次のコード(undedined FYI tmp.dataリターン)とコンソールに得るものです理由は分かりませんが、 "$$ state.value"オブジェクトにデータがあるように見えます。その場合、以下のコードが有効になります。

    var promise = $http.get("/api/sports/list"); 
    var tmp = promise.then(function(response) { 
        return response.$$state.value.data; 
    });