我正在尝试测试一些NodeJS设置API。
但是,当SQL返回有关NULL列的错误时,我的http调用只会挂起,您可以在节点控制台中看到错误。
我得到的错误是
node:7397)UnhandledPromiseRejectionWarning:未处理的承诺 rejection(rejection id:2):RequestError:无法插入值 在列' FeatureEntryId',表' testdb中为NULL STING.dbo.J_ProductFeaturesRelation&#39 ;;列不允许空值。 INSERT失败。"
理解SQL错误,这很好我只想让NodeJS将此错误消息返回给客户端。
这是代码。
# at the top
from cython.operator cimport dereference
# later
dereference(matcher).knnMatch(src_gpu,src_gpu_2,matches,2)
如果存储过程运行正常,则代码可以正常工作,但错误实际上从未实际存在到页面中。
以下是httpMsgs的内容:
//Add or update feature relations
var insertFeatureRelation = (callback, productid, featureid) => {
console.log(productid + ' ' + featureid)
var conn = new sql.Connection(settings.dbConfig())
conn.connect().then(function (conn) {
var request = new sql.Request(conn);
request.input('productid', sql.VarChar, productid);
request.input('featureid', sql.VarChar, featureid);
request.execute('PM_InsertFeatureRelation').then(function (recordsets, returnValue, affected) {
callback(recordsets)
})
}).catch(function (err) {
console.log('ffs');
callback(null, err);
});
}
exports.insertFeatureRelation = function (req, resp, productid, featureid) {
insertFeatureRelation(function (data, err) {
if (err) {
httpMsgs.show500(req, resp, err)
} else {
httpMsgs.sendJSON(req, resp, data)
}
resp.end();
}, productid, featureid)
};
答案 0 :(得分:0)
供将来参考...节点挂起的原因是因为SQL的错误从未在执行函数的catch中捕获。
这是更新的代码。
//Add or update feature relations
var insertFeatureRelation = (callback, productid, featureid) => {
console.log(productid + ' ' + featureid)
var conn = new sql.Connection(settings.dbConfig())
conn.connect().then(function (conn) {
var request = new sql.Request(conn);
request.input('productid', sql.VarChar, productid);
request.input('featureid', sql.VarChar, featureid);
request.execute('PM_InsertFeatureRelation').then(function (recordsets, returnValue, affected) {
callback(recordsets)
}).catch(function (err) {
console.log(err);
callback(null, err);
})
}).catch(function (err) {
console.log(err);
callback(null, err);
});
}
exports.insertFeatureRelation = function (req, resp, productid, featureid) {
insertFeatureRelation(function (data, err) {
if (err) {
httpMsgs.show500(req, resp, err)
} else {
httpMsgs.sendJSON(req, resp, data)
}
resp.end();
}, productid, featureid)
};