База данных sqlite3: TypeError: Невозможно прочитать свойство undefined - PullRequest
0 голосов
/ 03 июля 2018

У меня есть скрипт Node.js, который работал, но после перехода на другую виртуальную машину он больше не работает. Кто-нибудь может увидеть в чем проблема? Вот функция, db - это база данных:

this.start = function() {
  logger.debug('Starting up.');
  db.serialize(() => {
    db.run("DELETE FROM jobs WHERE status = 'failed'")
      .run("UPDATE jobs SET status = 'queued'", (err) => {
        if (err) {
          logger.error(err.message);
        } else {
          logger.info('done');
        }
      });
  });
}

Теперь я получаю следующую ошибку:

TypeError: Cannot read property 'run' of undefined
 at Database.db.serialize ()
 at TransactionDatabase.serialize
 at module.exports.start
 at Object.<anonymous>
...

Ошибка указывает на второй «.run».

Моя версия Node.js - 10.4.1, версия sqlite3 - 3.8.2.

Чего мне не хватает? Какой-то модуль?

1 Ответ

0 голосов
/ 05 июля 2018

Я думаю, что нашел ответ. Цепочка run() выполняет запросы почти одновременно. Согласно этому ответу , функция run() запускает запрос, но сразу возвращает.

Однако, если сериализовать цепочку и , эти два метода нельзя использовать одновременно. Вы пытаетесь выполнять запросы последовательно, но также и одновременно.

Хотя, в зависимости от ваших потребностей, вы можете вложить сериализацию, распараллеливание или обратные вызовы, как показано в документе «control flow» .

Я предполагаю, что метод serialize() "блокирует" цепочку, изменяя возвращаемое значение run() на undefined.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...