Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.08.2018, 13:21
Аспирант
Отправить личное сообщение для SorryHanzoMain Посмотреть профиль Найти все сообщения от SorryHanzoMain
 
Регистрация: 01.08.2018
Сообщений: 34

Выполнение задачи при положительном результате другой задачи
Есть код
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 наоборот если сравнение успешно.
Ответить с цитированием
  #2 (permalink)  
Старый 21.08.2018, 15:34
Аспирант
Отправить личное сообщение для stweet Посмотреть профиль Найти все сообщения от stweet
 
Регистрация: 21.12.2011
Сообщений: 41

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("у вас нет прав на это действие")
			}
		})
	}
})
Ответить с цитированием
  #3 (permalink)  
Старый 21.08.2018, 17:59
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 156

А мне вот интересно, всюду, где не попадя, объявлять константы - это признак хорошего тона или особой крутизны?
Ответить с цитированием
  #4 (permalink)  
Старый 21.08.2018, 18:05
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 560

ещё более странно - объявить функцию как async, но не использовать await )
Ответить с цитированием
  #5 (permalink)  
Старый 21.08.2018, 19:36
Аспирант
Отправить личное сообщение для SorryHanzoMain Посмотреть профиль Найти все сообщения от SorryHanzoMain
 
Регистрация: 01.08.2018
Сообщений: 34

Насколько я знаю sql.get это - запрос. Его как-то можно вернуть(callback)
и из callback получить результат запроса. Можно ли это как-то осуществить?
Ответить с цитированием
  #6 (permalink)  
Старый 21.08.2018, 19:50
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 560

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, 21.08.2018 в 19:54.
Ответить с цитированием
  #7 (permalink)  
Старый 21.08.2018, 21:04
Аспирант
Отправить личное сообщение для SorryHanzoMain Посмотреть профиль Найти все сообщения от SorryHanzoMain
 
Регистрация: 01.08.2018
Сообщений: 34

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("да")
                }
            })}})})
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При выполнение строки кода вылетаю из функции. developer_ Events/DOM/Window 3 28.07.2011 00:45
Изменение цвета ячейки в таблице, при наведении на строку другой таблицы Psychosonic Общие вопросы Javascript 12 24.11.2010 16:44
Прерывается выполнение функции при смене аргумента mikser763 Общие вопросы Javascript 1 11.10.2010 16:36
Выполнение скрипта при нажатии Entet в текстовм поле Vlasssov Общие вопросы Javascript 4 23.08.2009 23:31
выполнение ф-ии при изменении состояния radio MaxB Events/DOM/Window 5 24.06.2009 14:24