2016-07-06 86 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()将其转换为对象,以便您可以访问其属性。

这里我在支票内写了JSON.parse(),即只有当img是“string”类型时才分析它。但是我认为,你总是会把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完成。谢谢:) –

+0

这是正确的。我得到一个字符串数组,而不是一个对象数组。谢谢。 – belyid

+0

@belyid你得到一个字符串,而不是一个对象(不是数组);) –

相关问题