Javascript 使用节点mysql正确处理重复密钥
我正在我的申请中填写注册表格,用户名和电子邮件必须是唯一的。 我运行了一个mysql数据库,并使用节点mysql(v2.0.0)作为驱动程序 当用户尝试使用在数据库中注册的allready名称时,mysql会引发以下错误:Javascript 使用节点mysql正确处理重复密钥,javascript,node.js,error-handling,node-mysql,Javascript,Node.js,Error Handling,Node Mysql,我正在我的申请中填写注册表格,用户名和电子邮件必须是唯一的。 我运行了一个mysql数据库,并使用节点mysql(v2.0.0)作为驱动程序 当用户尝试使用在数据库中注册的allready名称时,mysql会引发以下错误:错误:ER\u DUP\u条目:重复条目'John'作为key'nickname',但在节点引发的错误对象中,mysql不包含有关错误的有用信息: console.log(JSON.stringify(err)); {“code”:“ER_DUP_ENTRY”,“errno”
错误:ER\u DUP\u条目:重复条目'John'作为key'nickname'
,但在节点引发的错误对象中,mysql不包含有关错误的有用信息:
console.log(JSON.stringify(err));
{“code”:“ER_DUP_ENTRY”,“errno”:1062,“sqlState”:“23000”,“index”:0}
我在哪里可以拿到相关的条目和钥匙?我需要知道密钥昵称
或密钥电子邮件
中的哪一个是重复密钥错误的原因,以便我可以警告用户
我知道我可以在执行
err.toString()
和解析结果(其中包含mysql错误字符串本身)时找到此信息,但我想知道是否有更好的方法来执行此操作。您没有看到消息
和其他错误属性的原因是其中一些“标准”属性未设置为可枚举,因此JSON.stringify()
不会拾取它们
您可以向错误中添加一个toJSON()
,该错误正确返回序列化所有属性。如果在传入的值上检测到该方法的存在,则该方法将由JSON.stringify()
自动调用。例如:
var config = {
configurable: true,
value: function() {
var alt = {};
var storeKey = function(key) {
alt[key] = this[key];
};
Object.getOwnPropertyNames(this).forEach(storeKey, this);
return alt;
}
};
Object.defineProperty(Error.prototype, 'toJSON', config);
您是否尝试了
console.log(错误消息)代码>或只是console.log(err)代码>?@mscdex:哦,我不知道err.message!为什么它没有出现在JSON.stringify(err)
或for(key-in-err){…}
中?