Невозможно обновить вставленные строки - PullRequest
0 голосов
/ 06 января 2020

Я не могу обновить вставленные строки, пока не перезапущу свое приложение node.js. Я использую оператор INSERT в запросе SELECT, если это важно.

var stmt = db.prepare("INSERT INTO moneyset (userID, money, lastDaily, answer) VALUES (?,?,?,?)");
stmt.run(user.id, 0, 'Not Collected', null);
stmt.finalize();

В следующей области в том же прослушивателе событий я использую

db.run(`UPDATE moneyset SET answer = '${answer}' WHERE userID = '${user.id}'`);

Но похоже, что второй запрос никогда не используется и не работает. Нет ошибок, все переменные имеют правильный тип и не определены. Все работает нормально, если строка была создана до запуска приложения или после перезапуска приложения, что является нежелательным поведением. Хастебин со всем фрагментом: https://hastebin.com/vorepiwube.coffeescript

1 Ответ

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

обернуть вашу функцию вставки в обещание

 return new Promise((resolve, reject) => {
            db.get(`SELECT * FROM moneyset WHERE userID = '${gMember.user.id}'`, (err, row) => {
            if (!row) {
                // var stmt = db.prepare("INSERT INTO moneyset (userID, money, lastDaily, answer) VALUES (?,?,?,?)");
                // //db.run(`INSERT INTO moneyset (userID, money, lastDaily, answer) VALUES (${user.id}, 0, NULL, NULL)`);
                // stmt.run(user.id, 0, 'Not Collected', null);
                // stmt.finalize();
                money.updateBal(user.id, 1).then(() => { console.log(`Created row for ${user.username}`)});
                resolve(1)
            } else {
                if (row.answer != null) {
                    console.log(row.answer);
                    return gMember.send(`Już wybrałeś odpowiedź do ostatniego pytania **>${row.answer}<**. Poczekaj na następne pytanie.`);
                    resolve(1);
                }else{
                    resolve(1);
                }
            }
          }) 

        }).then(r =>{
           switch (emoji) {
        case '?':
            if (_voted) return await messageReaction.remove(user);
            db.run(`UPDATE moneyset SET answer = 'A' WHERE userID = '${user.id}'`);
            voted.set(user.id, messageReaction.message.id);
            break;
        case '?':
            if (_voted) return await messageReaction.remove(user);
            db.run(`UPDATE moneyset SET answer = 'B' WHERE userID = '${user.id}'`);
            voted.set(user.id, messageReaction.message.id);
            console.log(_voted);
            break;
        case '?':
            if (_voted) return await messageReaction.remove(user);
            db.run(`UPDATE moneyset SET answer = 'C' WHERE userID = '${user.id}'`);
            voted.set(user.id, messageReaction.message.id);
            console.log(_voted);
            break;
        case '?':
            if (_voted) return await messageReaction.remove(user);
            db.run(`UPDATE moneyset SET answer = 'D' WHERE userID = '${user.id}'`);
            voted.set(user.id, messageReaction.message.id);
            console.log(_voted);
            break;
        default:
            messageReaction.remove(user);
            break;
    }
        })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...