【问题标题】:Can't understand the return of promise in koa and nodejs看不懂koa和nodejs中promise的返回
【发布时间】:2018-06-07 16:48:20
【问题描述】:

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 是空还是不空,我不明白,这是我的问题

  1. 如果我使用select命令,比如let _sql = "select * from table where key1=? and key2=?",如果result为空,表示没有记录,如果result不为空,则返回对应的用户数据,对吗?

  2. updatedeleteinsert 的返回值是多少?

非常感谢。

【问题讨论】:

    标签: mysql node.js koa


    【解决方案1】:
    1. 是的,如果查询没有返回任何内容,您将得到null,如果返回,则会给出data
    2. 对于更新、删除、插入,您将获得json,其中包含某些键,例如changedRowsaffectedRows。 “插入”查询将为您提供该行的 insertId。基本上你会得到你的操作成功执行的确认。

    connection.query(sql, values, ( err, results, fields) => { if ( err ) { reject( err ) } else { resolve( rows ) } connection.release() })

    【讨论】:

    • 为什么要在此处添加fields
    • 在 fields 变量中,您将获得受写查询影响的字段。例如:在插入时您将获得插入的字段,或者在删除时您将获得已删除的字段。
    【解决方案2】:

    这个let result = mysqlModel.optUser([s,d]).then() 不会为您的结果变量设置正确的数据。它只会返回一个未决的承诺。只有在 promise 解决后才能接收数据。调用 Promise 的正确方法是:

    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);
    });
    

    你可以阅读更多关于 promises here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多