Не могу понять возвращение обещания в koa и nodejs

Код в 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имеет значение null, то есть не имеет записи, если result не нуль, он вернет соответствующие данные пользователя, я прав?

  2. Какой возврат в update, delete, insert?

Большое спасибо.

2 ответа

Решение
  1. Да вы получите null если запрос ничего не возвращает и если он это сделает, то даст data
  2. для обновления удали, вставь получишь json которые состоят из определенных ключей, таких как changedRows, affectedRows, Запрос 'insert' даст вам insertId для этой строки. В основном вы получите подтверждение того, что ваша операция успешно выполнена.

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

Это 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);
});

Вы можете прочитать больше об обещаниях здесь

Другие вопросы по тегам