为什么可以';我不能访问javascript中的对象属性吗?

为什么可以';我不能访问javascript中的对象属性吗?,javascript,node.js,Javascript,Node.js,我在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(); }; 结果

我在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();
};
结果是:

{"id":42,"path":"gGGfNIMGFK95mxQ66SfAHtYm.jpg"}
undefined undefined
{"id":42,"path":"gGGfNIMGFK95mxQ66SfAHtYm.jpg"}
我可以访问客户端的属性,但不能访问服务器端的属性


有人能帮我了解发生了什么事吗?为什么我不能访问我的对象属性?

正如其他人所指出的,img很可能是字符串形式的。您需要在其上运行
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();
};

只需检查它是否是
object
string
它可能是什么?在日志之前添加
img=JSON.parse(img)
。上述注释很可能是正确的。如果
img
是一个对象,那么控制台输出将更像
object{id:42,path:“gGGfNIMGFK95mxQ66SfAHtYm.jpg”}
。“你发布的是一个字符串。”昆汀说。谢谢:)没错。我得到的是字符串数组,而不是对象数组。谢谢。@belyid您得到的是字符串而不是对象(不是数组);)@belyid如果您正在使用express,您应该将body.parser添加为middlware,这样您就不需要在每个请求上都编写它。在这种情况下,我得到的数组只有一个字符串。但需要解析的字符串可能不止一个。