Сообщение от SorryHanzoMain
|
Он работает прекрасно
|
На счет "прекрасно" я бы поспорил.
В вашем коде 4 раза из базы данных извлекаются одни и те же данные.
Можно получить результат единожды, дальше вместо сношения БД работать с полученной коллекцией данных (ниже пример кода).
Судя по всему, метод sql.get возвращает Promise, следовательно даже с таким обильным кол-вом запросов код можно было написать с значительно меньшим кол-вом уровней вложенности.
Сообщение от SorryHanzoMain
|
Сделать это сложно, по этому нужно, чтобы обработчик срабатывал если в сообщении есть...
|
Похоже на постановку задачи.
client.on("message", request => {
const REQUIRED_PREFIX = '?';
const message = request.content.toString().trim();
if (message.substr(0, 1) !== REQUIRED_PREFIX)
return;
sql.get('SELECT * FROM вопросы WHERE вопрос LIKE ?', [message]).then(results => {
if (!results)
return void sql.run('INSERT INTO вопросы (вопрос) VALUES (?)', [message]);
let response = 'Нет',
hasUndefined = false,
hasTrue = false;
//хз что-такое results, поэтому
[].forEach.call(results, row => {
if (row.trueorfalse === 'unfined')
hasUndefined = true;
else if (row.trueorfalse === 'true')
hasTrue = true;
});
if (hasUndefined)
response = 'Я этого ещё пока не знаю, но это не надолго';
else if (hasTrue)
response = 'Да';
request.reply(response);
});
});