Вот что я пробовал.
var obj = {sfsf: fsdfs};
connection.query("UPDATE table SET 'qty' = 'qty' - ? WHERE item_id = ?", [p1, p2], callback.bind(obj))
Функция обратного вызова:
function callback(f_err, f_rows, f_fields){ //default parameters err, rows, fields
if(!f_err){
console.log(obj); //undefined
// other lines of code
}
}
У меня есть сомнения, что я делаю это неправильно. Существуют параметры по умолчанию, которые передаются после выполнения запроса, такие как err, rows, fields
. с этими параметрами я хочу передать некоторые данные функции обратного вызова. Есть ли другой способ сделать это?
Маленькая цитата
Метод bind() создает новую функцию, которая при вызове имеет это ключевое слово, установленное на предоставленное значение, с заданной последовательностью аргументов, предшествующей любому, предоставленному при вызове новой функции.
Итак, в вашем случае в callback obj
bind как this
. Поэтому вы должны изменить console.log(obj)
на console.log(this)
. Вы можете найти больше информации в MDN