Не могу понять возвращение обещания в 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
ноль или нет ноль, и я не понимаю этого, вот мои вопросы
Если я использую
select
команда, такая какlet _sql = "select * from table where key1=? and key2=?"
еслиresult
имеет значение null, то есть не имеет записи, еслиresult
не нуль, он вернет соответствующие данные пользователя, я прав?Какой возврат в
update
,delete
,insert
?
Большое спасибо.
2 ответа
- Да вы получите
null
если запрос ничего не возвращает и если он это сделает, то дастdata
- для обновления удали, вставь получишь
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);
});
Вы можете прочитать больше об обещаниях здесь