Выполнение задачи при положительном результате другой задачи
Есть код
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, время: 00:47. |