无法理解koa和nodejs的承诺回报

n3h0vuf2  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(354)

中的代码 mysql.js 文件

let query = function( sql, values ) {
return new Promise(( resolve, reject ) => {
    pool.getConnection(function(err, connection) {
        if (err) {
            reject( err )
        } else {
            connection.query(sql, values, ( err, rows) => {
                if ( err ) {
                    reject( err )
                } else {
                    resolve( rows )
                }
                connection.release()
            })
        }
    })
  })
}

let optUser = function (value) {
  let _sql = "sql command"
  return query(_sql, value)
}

呼叫代码如下

let result = mysqlModel.optUser([s,d]).then()

在这里 result 是空还是不空,我不明白,这是我的问题
如果我使用 select 命令,例如 let _sql = "select * from table where key1=? and key2=?" ,如果 result 如果 result 不为空,它将返回相应的用户数据,对吗?
回报是多少 update , delete , insert ?
非常感谢。

kx7yvsdv

kx7yvsdv1#

这个 let result = mysqlModel.optUser([s,d]).then() 不会为结果变量设置正确的数据。它只会返回一个悬而未决的承诺。只有承诺得到解决,才能接收数据。做出承诺的正确方法是:

mysqlModel.optUser([s, d])
.then(function (data) {
    // Your data will be present here. You can check for null here.
    console.log(data);
})
.catch(function (err) {
    // This is called if the query encounters some error. 
    console.log(err);
});

你可以在这里阅读更多关于承诺的内容

44u64gxh

44u64gxh2#

是的,你会得到 null 如果query不返回任何内容,并且如果返回了,则 data 对于更新、删除、插入,您将获得 json 由一些钥匙组成,比如 changedRows , affectedRows . “insert”查询将为您提供该行的insertid。基本上,您将得到一个确认,您的操作已成功执行。 connection.query(sql, values, ( err, results, fields) => { if ( err ) { reject( err ) } else { resolve( rows ) } connection.release() })

相关问题