2016-07-06 7 views
1

私はNode.jsの中に、単にループをしました:javascriptでオブジェクトのプロパティにアクセスできないのはなぜですか?

exports.sample = function (req, res) { 
    var images = req.query.images; 
    images.forEach(function (img) { 
     console.log(img); 
     console.log(img.path, img.id); 
     console.log(img); 
    }); 
    res.end(); 
}; 

結果は次のとおりです。

{"id":42,"path":"gGGfNIMGFK95mxQ66SfAHtYm.jpg"} 
undefined undefined 
{"id":42,"path":"gGGfNIMGFK95mxQ66SfAHtYm.jpg"} 

私は、サーバー側でクライアント側のプロパティにアクセスすることはできませんが。

何が起こっているのか理解してもらえますか?なぜオブジェクトプロパティにアクセスできないのですか?

+3

ちょうどそれが 'object'または' STRING' – Rayon

+1

[解析](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)があるかどうかを確認多分 ? – Gintoki

+1

ログの前に 'img = JSON.parse(img)'を追加してください – imkost

答えて

3

他の人が指摘しているように、おそらくimgは文字列形式です。オブジェクトに変換するにはJSON.parse()を実行する必要があるため、そのプロパティにアクセスできます。

imgのタイプが「文字列」の場合にのみ、JSON.parse()をチェック内に記述しました。解析する必要があります。しかし、私はあなたが常に文字列としてimgを取得しているので、チェックなしで簡単に解析できると思います。

exports.sample = function (req, res) { 
    var images = req.query.images; 
    images.forEach(function (img) { 
     console.log(img); 

     //Here, this code parses the string as an object 
     if(typeof img === "string") 
      img = JSON.parse(img); 

     console.log(img.path, img.id); 
     console.log(img); 
    }); 
    res.end(); 
}; 
+0

@Quentin Done。ありがとう:) –

+0

それは正しいです。私はオブジェクト配列ではなく文字列配列を取得していました。ありがとうございました。 – belyid

+0

@belyid文字列とオブジェクト(配列ではありません)を取得していました;) –

関連する問題