node.js - Why can't I access object properties in javascript? - Stack Overflow

I've a simply loop in node.js:exports.sample = function (req, res) {var images = req.query.images;

I've a simply loop in node.js:

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();
};

The result is:

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

I can access the properties in the client side but not on the server side.

Can someone help me to understand what's happening? Why can't I access my object properties?

I've a simply loop in node.js:

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();
};

The result is:

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

I can access the properties in the client side but not on the server side.

Can someone help me to understand what's happening? Why can't I access my object properties?

Share Improve this question asked Jul 6, 2016 at 9:43 belyidbelyid 8712 gold badges12 silver badges29 bronze badges 4
  • 4 Just check whether it is object or string – Rayon Commented Jul 6, 2016 at 9:45
  • 1 parse it maybe ? – elreeda Commented Jul 6, 2016 at 9:45
  • 1 add img = JSON.parse(img) before logs – imkost Commented Jul 6, 2016 at 9:45
  • 1 The above ments are most likely correct. If img were an object then the console output would be more like Object {id: 42, path: "gGGfNIMGFK95mxQ66SfAHtYm.jpg"}. What you've posted is a string. – Reinstate Monica Cellio Commented Jul 6, 2016 at 9:50
Add a ment  | 

1 Answer 1

Reset to default 6

As others have pointed out, most probably img is in string form. You need to run JSON.parse() on it to convert it to an object, so you can access its properties.

Here I have written the JSON.parse() inside a check i.e. only when img is of type "string" should you parse it. But I think, you will always be getting img as a string, so you can simply parse it without the check.

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();
};

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744057773a4551218.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信