Javascript Обратный вызов не выполняется после Mysql запроса с аргументами (узел) - PullRequest
0 голосов
/ 08 января 2020

Я новичок и программирую свое первое NodeJS приложение. Мое приложение использует базу данных MySQL, и поскольку мне нужен доступ к этой базе данных из нескольких файлов, я создал модуль dbdriver:

const mysql = require('mysql');
const util = require('util');


function makeDb(config) {
    const connection = mysql.createConnection(config);  return {
      query(sql, args) {
        return util.promisify(connection.query)
          .call(connection, sql, args);
      },
      close() {
        return util.promisify(connection.end).call(connection);
      }
    };
}

exports.makeDb = makeDb

Если я вызываю эту функцию из своего кода с запросом SQL без аргументы и обратный вызов, он отлично работает:

const db = dbdriver.makeDb(config.dbconfig);
db.query("SELECT factory_id, factory_name FROM factories WHERE factory_lastupdated < DATE_SUB(NOW(), INTERVAL 3 MINUTE) AND factory_status != 0;", function(err, result){
    if(err){
        logger.errorlog(err);
        db.close();
    }
    else{
          //Do some stuff with the result, not relevant here
})

(config.dbconfig - это конфигурация базы данных sql с хостом, пользователем, паролем и именем базы данных)

Однако, как только я добавляю аргументы к запросу SQL, моя функция обратного вызова, похоже, больше не выполняется. Тем не менее, я вижу в БД, что мой запрос был успешно выполнен с аргументами. Пример:

const db = dbdriver.makeDb(config.dbconfig);

db.query("DELETE from companies where company_name = ?;", ['testing'], function(err, result){
    if(err){
        throw(err);
    }
    else{
        console.log(result)
    }

})
console.log('test')

В результате компания, называемая 'testing', удаляется из БД, и выполняется строка console.log ('test'), но почему-то console.log (result) этого не делает.

Использование Async / Await работает, но я бы предпочел продолжать использовать обратный вызов, чтобы сохранить мой код единообразным.

Любой совет, как я могу заставить функцию обратного вызова выполняться?

...