作为小型节点应用程序的一部分,我编写了这个函数,使用mysql/mysqljs将某些东西保存到数据库中(显然是异步操作):
function persist(values) {
getConnection()
.then(connection => {
const {fistName, lastName} = values
const query = mysql.format(
'INSERT INTO names VALUES(NULL, ?, ?)',
[fistName, lastName]
)
return new Promise((resolve, reject) => {
connection.query(query, (err, results, fields) => {
connection.release()
if (err) {
reject(err)
}
resolve([results, fields])
})
})
})
.catch(err => {
console.error(err)
})
}
getConnection
实际上是我宣称getConnection function的mysqljs / mysql' s using Bluebird的一个版本。
虽然这有效,但由于我使用了Promise构造函数,它对我来说似乎仍然有些笨拙。目前,由于connection.query
(回调秒)的特殊签名,这是我能够提出的唯一解决方案。
有没有办法进一步扁平化这个链条,使其更具可读性,同时保持与connection.query
签名兼容?