NodeJS sqlite3 SELECT запрос кешируется - PullRequest
0 голосов
/ 08 января 2020

Я создаю бот-диск (Discord JS), используя NodeJS и использую sqlite3 для хранения 2 наборов данных.

Я открываю БД с помощью:

 let db = new sqlite3.Database('./db/games.db', (err) => {
        if (err) {
            console.error(err.message);
            return;
        }
        ...
}

Позже я сохраняю определенное сообщение в таблице с именем promotedGames (id INCREMENTAL, сервер INT, канал INT, messageID INT)

И когда я запрашиваю базу данных с помощью

db.all(`SELECT * FROM promotedGames WHERE gameID = ${row.id}`, (err, promotedGamesResults) => {
...

It всегда возвращает первую сохраненную игру, я понятия не имею, почему это вообще может происходить.

Шаги, предпринятые до сих пор: - перезапустить приложение Node - удалил базу данных sqlite3 и переделал ее - удалил папку node_modules и переустановил все пакеты

Любые намеки на то, что я могу делаете неправильно?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Я думаю, что вы намереваетесь вернуть записи, соответствующие ${row.id}. Он выполняет запрос, переданный в качестве аргумента, и для каждого результата из базы данных он запускает обратный вызов. Поэтому лучше использовать db.each (), когда вы собираетесь извлечь некоторые элементы из базы данных.

db.each(`SELECT * FROM promotedGames WHERE gameID = ${row.id}`, (err, promotedGamesResults) => {

...

PS: db.each используется, когда вам нужно вернуть все строки и работать с выбранным возвращенным набором данных.

0 голосов
/ 10 января 2020

Вы пытаетесь найти свой gameID с помощью row.Id, id строки в sqlite - это встроенный счетчик строк, которые вы вставили в таблицу. Это НЕ столбец gameID.

...