Не могу понять возвращение обещания в koa и nodejs - PullRequest
0 голосов
/ 07 июня 2018

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

  2. Что такое возврат в update, delete, insert?

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

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

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

Подробнее об обещаниях можно прочитать здесь

0 голосов
/ 07 июня 2018
  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() })

...