如何访问此Javascript mysql错误对象(Nodejs)?

时间:2015-01-04 05:08:01

标签: javascript mysql node.js

下面有更多详细信息,但问题是下面是一个有效的javascript对象,如何访问第一个数组类型的东西

{ [some-text-here-without-quotes] key1: 'text', key2: 1, key3: '23000', key4: 0 }

使用Nodejs,Express和MySQL构建应用程序。 我决定在这个链接上使用NPM中的'mysql'库:https://www.npmjs.com/package/mysql

在测试时我故意创建了一个违反唯一约束的重复条目条件,因为我想查看返回的错误对象是什么样的。

当我从查询中调试console.log(错误)时,以下是打印内容:

{ [Error: ER_DUP_ENTRY: Duplicate entry 'abcdefg' for key 'token_UNIQUE'] code: 'ER_DUP_ENTRY', errno: 1062, sqlState: '23000', index: 0 }

我必须遗漏一些明显的东西。但我似乎无法访问第一个数组中的数据。对象的一部分以 [错误:开头并以'token_UNIQUE'结尾]

开头

如何访问对象的该部分?

(首先,我认为这是一个格式不正确的对象字符串或来自mysql库的bug,但是underscore.js说它是一个对象

_.isObject(error); //true

3 个答案:

答案 0 :(得分:1)

得到了完全相同的问题,我仍然不明白那个特定的语法意味着什么.. 但是,我设法通过强制将它转换为字符串来访问该对象的这一部分,只需将其连接到一个字符串中:

if (error) {    
    error.isError=1
    errmsg=" "+error   <---- cast to string here
    error.msg=errmsg;  <---- then back into the object as a tring
    response.end(JSON.stringify(error));
    db.end();
    console.log("<-"+error)
    return;
}

答案 1 :(得分:0)

你可以做到

Object.keys(err)

这将为您提供err对象中包含的密钥列表。从那里,你可以选择你的intereste的钥匙。 (或)你可以使用,

console.dir(err) 

以格式化方式打印对象。

答案 2 :(得分:-1)

也许答案有点晚了,我昨天遇到了这个问题。但解决方案很简单,只需使用toString()

即可

error.toString()

error.message可能是一种正式的方式

以上两种方法都返回相同的输出