Выполнение задачи при положительном результате другой задачи
Есть код
client.on("message", async message => { const name = ["Captain"] const args = message.content.slice(config.prefix.length).trim().split(/ +/g); const command = args.shift().toLowerCase(); if (message.content.indexOf(prefix) !== 0) return; if(command == "вход"){ sql.get('SELECT * FROM users WHERE name LIKE ?', [name]).then(() => { if(){ message.channel.send("у вас нет прав на это действие") } if(){ message.channel.send("В ведите пароль") } }) } Как видно на 8 и 11 строке ошибки. Нужно,чтобы действие на 8 строке срабатывало, если сравнение на 7 прошло не успешно, а на 11 наоборот если сравнение успешно. |
sql.get() // Должен же что то возвращать? // т.е. sql.get().then(result => { /* ... */ } ) // а не sql.get().then(() => { /* ... */ } ) // Ну а далее client.on("message", async message => { const name = ["Captain"] const args = message.content.slice(config.prefix.length).trim().split(/ +/g); const command = args.shift().toLowerCase(); if (message.content.indexOf(prefix) !== 0) return; if (command == "вход") { sql.get('SELECT * FROM users WHERE name LIKE ?', [name]).then(res => { // если есть ответ от ДБ if (res) { // идем далее message.channel.send("В ведите пароль") } else { // ругаемся. message.channel.send("у вас нет прав на это действие") } }) } }) |
А мне вот интересно, всюду, где не попадя, объявлять константы - это признак хорошего тона или особой крутизны?
|
ещё более странно - объявить функцию как async, но не использовать await )
|
Насколько я знаю sql.get это - запрос. Его как-то можно вернуть(callback)
и из callback получить результат запроса. Можно ли это как-то осуществить? |
SorryHanzoMain,
sql.get(...) возвращает промис результат запроса попадает в ту функцию, которую ты передал в then ошибки выполнения идут во вторую функцию в then https://learn.javascript.ru/promise и глянь в документации по этому твоему пакету sql, в каком формате приходит ответ или ошибка ---- раз уж заявлен async/await, то пусть тогда используется на самом деле: try { var res = await sql.get('SELECT * FROM users WHERE name LIKE ?', [name]); // далее обрабатываем полученные данные } catch(error) { // тут что-то делаем если запрос не смог. } |
Alexandroppolus
и глянь в документации по этому твоему пакету sql, в каком формате приходит ответ или ошибка Нашёл только документацию на английском. https://libraries.io/npm/sqlite Сам код изменился, в нём нет async client.on("message", request => { const REQUIRED_PREFIX = '?'; const message = request.content.toString().trim(); if (message.substr(0, 1) !== REQUIRED_PREFIX) return false sql.get('SELECT * FROM вопросы WHERE вопрос LIKE ?', [message]).then(res => { if (res= false) return void sql.run('INSERT INTO вопросы (вопрос) VALUES (?)', [message]).then(() => { request.reply("Извини, я этого пока не знаю, но это не надолго") }); if(res= true){ sql.get('SELECT * FROM вопросы WHERE вопрос LIKE ?', ["true"]).then(res => { if(res= false){ sql.get('SELECT * FROM вопросы WHERE вопрос LIKE ?', ["false"]).then(res => { if(res=true){ request.reply("нет") }else{request.reply("незнаю")} }) } if(res=true){ request.reply("да") } })}})}) |
Часовой пояс GMT +3, время: 03:09. |