节点js函数返回\[object Object\]而不是字符串值

新手上路,请多包涵

我是 java 脚本和节点 js 的新手,我试图从 MySQL 数据库中获取一个值,返回值是 [object Object] 而不是字符串。我真的没有在网上找到任何答案是什么问题。我希望这里有人可以提供帮助。行值为 [object Object] 。

这是我的功能

exports.getAllIdInfo=  function(dbConnection, tables ,id , callback){
        var tableName= tables[i];
        var tableVariable = tableName;
        var myQuery = 'SELECT time, ' + tableVariable + ' FROM ' + tableName + ' WHERE id= ' + id;
        var query = dbConnection.query(myQuery, function (err, row, result) {
            console.log(query.sql);
            if (err) {
                console.log("getAllGoodIds error");
                console.error(err);
                return;
            }
            console.log("row is: " + row);
            callback(row);
        });
};

原文由 Dan The Man 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 525
2 个回答

当存在具有键和值的对象时,[object Object] 出现在日志中。您可以使用点符号 (.) 访问对象中的属性,例如

objectName.propertyName

如果 properyName 是另一个对象,它仍将返回 [object Object],因此您需要在其中寻找另一个属性。属性还可以包含方法(函数)。例如,如果您想获取对象的字符串版本以便比较它们,则使用

JSON.stringify(objectName);

将 console.log 与节点一起使用时,如果对象嵌套很深,则可能无法查看嵌套对象的内容。在这种情况下,您可以使用:

 console.log(util.inspect(objectName, false, null));

查看对象的整体。尽管您必须在文件中要求 util。


也许你有这样的事情:

 const myObject = { hello: 'world' };
console.log('My object: '+myObject);

这个问题是它在控制台中将 myObject 转换为字符串,例如使用 myObject.toString() 。在这种情况下,您可以让自己更轻松,并像这样将其分开:

 const myObject = { hello: 'world' };
console.log('My object:', myObject);

并且控制台现在可以解释 myObject 并很好地显示它。

原文由 George 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用以下选项之一:

 console.log("%o", yourObjName)
console.log(JSON.stringify(yourObjName))
console.log(JSON.stringify(yourObjName, null, 3))

原文由 moulay youssef Asakour 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题