Я использую библиотеку mysql
NPM с Node.JS, и я пытаюсь выполнить запрос к базе данных и заставить функцию возвращать Promise вместо запроса обратного вызова.Вот что я попробовал:
index.js:
var result = await asyncQuery.main(connection, "SELECT * FROM tbl WHERE id = ?", "1234567890")
asyncQuery.js:
var colors = require('colors')
module.exports = {
main: function(con, q, vars) {
return new Promise((resolve, reject) => {
if (!vars) {
con.query(q, function (err, result) {
if (err) {
console.log(colors.red(err.stack))
return reject(err);
}
resolve(result)
})
}
else {
con.query(q, vars, function (err, result) {
if (err) {
console.log(colors.red(err.stack))
return reject(err);
}
resolve(result)
})
}
})
}
}
Это прекрасно работает, если не переданы переменные / аргументы (?
), но как только используется ?
, я получаю сообщение об ошибке:
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
Если бы я выполнил обычный запрос с обратным вызовом, это бы прекрасно работало.Что-то не так с asyncQuery.js
, но я не уверен, в чем проблема.
У кого-нибудь есть исправление для этого кода или более простой способ достижения моей цели?Я слышал о Promise MySQL Library , но я не уверен, поддерживает ли она обратные вызовы Promise и .Если это произойдет, дайте мне знать, и я сделаю это.
NodeJS Версия: 9.1.0
Версия NPM: 5.5.1
NPMВерсия библиотеки MySQL: 2.15.0