我在Node.js中使用mssql模块。
我有以下date
是smalldatetime的列:
function getData(date, callback) {
var qs = "select * from T1 where date='2017-04-31'";
new sql.Request().query(qs).then(function (result) {
return callback(null, result);
}).catch(function (err) {
return callback(err);
});
}
date
过滤器中给出的值对于smalldatetime类型无效,但不会调用then
或catch
块。代码流跳转到getData
函数的末尾,并在Node.js系统的某个位置生成以下错误:
(node:11172)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:3):TypeError:无法读取属性' 0' of undefined`
Node.js应用程序也没有崩溃,因此(这是一个Web应用程序)客户端保持打开的连接。
我是否正确使用then
/ catch
模式,或者这可能是模块中的错误?
答案 0 :(得分:0)
查看文档(假设您使用https://github.com/patriksimek/node-mssql)...
sql.connect(config).then(function() {
return sql.query('select * from mytable where id = ${value}')
}).then(result => {
console.dir(result)
}).catch(err => {
// ... error checks
})
所以,承诺似乎比你使用它的地方高一级(而不是query
)。
要使用回调,看起来就是这样:
new sql.Request().query(qs, callback)
从我正在阅读的内容来看,.query
上的承诺只发生在INSERT,UPDATE或DELETE