我正在使用该代码
var ibmdb = require('ibm_db')
function executeSql(sql)
{
return new Promise( (resolve,reject) => {
ibmdb.open("DRIVER={DB2};DATABASE=SITRAN;...",(err,conn) => {
if (err) reject(Error(err))
conn.query(sql,(err,rows) => {
if (err) reject(Error(err))
console.log('length:',rows.length)
conn.close(() => { console.log('done'); resolve(rows); })
})
})
})
}
executeSql(sql)
.then((result) => { console.log('result:',result.length) })
db2部分正在运行,它提供1045
行,但代码工作奇怪
length: 0
length: 1045
done
result: 0
我不明白为什么length
显示两次,一个显示0,一个显示1045.还有resolve(rows)
似乎不起作用的原因。
答案 0 :(得分:0)
conn.query()
是一个异步函数,可以解释双重console.log()
的行为。至于resolve()
的怪异行为,请尝试使用resolve(rows.fetchAllSync())
。