如何在node.js应用程序中捕获插入异常的唯一约束



我是node.js的新手,我在IBM DB2 Bluemix上有一个node.js应用程序连接到DB2数据库。我试图在数据库中插入一条记录,但我想知道插入操作是否由于唯一约束而失败,那么我如何捕获异常并将错误消息传递给调用函数。以下是我调用createItem的代码:-

dao.createItem(conn,ItemData,function(err, isValid){
if (isValid != '1') {
console.log(err);
console.log("Operation failed");
res.status(603);
var errmsg = "Operation failed due to duplicate values";
var errJson =util.buildErrorJson(601,err,errmsg);
console.log(err.stack);
res.send(errJson);
}

下面是createItem:-

exports.createItem = function(conn,ItemData, callback) {
conn.beginTransaction(function (err) {
if (err) {
//could not begin a transaction for some reason. 
console.log(err);
return conn.closeSync();
}
var stmt = "SELECT count(*) as rows_inserted from final table (INSERT INTO   T1(col1, col2, col3) values ('p1', 'p2', 'p3'))"
conn.query(stmt,function (err, rows) {
if (err) {
console.log(err);
} else {
console.log(rows);
var dataarr = JSON.parse(JSON.stringify(rows));
var rows_inserted = dataarr[0].ROWS_INSERTED;
console.log("rows inserted" + rows_inserted); 
conn.commitTransaction(function (err){
if (err) {
console.log(err);
callback(err,rows);
}
});
}
});

问题是,当插入操作在conn.query失败时,我不确定如何捕获错误细节并将其传递给调用方法。任何帮助都将不胜感激。
由于

当conn.query的插入操作失败时,结果回调将错误消息作为第一个参数。您可以简单地使用该错误对象执行顶层回调,与在commitTransaction中执行的方法相同。

<>之前出口。createItem = function(conn,ItemData, callback) {conn.beginTransaction(function (err) {If (err) {//由于某些原因无法开始一个事务。console.log(错);返回conn.closeSync ();}var stmt = "SELECT count(*) as rows_insert from final table (INSERT INTO T1(col1, col2, col3) values ('p1', 'p2', 'p3') "Conn.query (stmt,function (err, rows) {If (err) {console.log(错);回调(错);} else {console.log(行);var dataarr = JSON.parse(JSON.stringify(rows));var rows_insert = dataarr[0]. rows_insert;Console.log ("rows inserts " + rows_inserts);conn.commitTransaction(函数(err) {If (err) {console.log(错);回调(呃,行);}});}});

最新更新