это код, который у меня есть для моей команды предупреждения, она читает из базы данных sqlite.
user = message.mentions.users.first()
embed = new Discord.MessageEmbed()
.setTitle(`warnings of ${user.username}`)
.setTimestamp()
.setFooter('shadowcraft - **Test Mode!!**');
sql = 'SELECT * from moderation WHERE userID = ?'
db.each(sql, [user.id], (err, row) => {
if (err) throw err;
mod = client.user.fetch(toString(row.moderatorID))
console.log(row)
embed.addField(`${mod.tag}`, `${row.reason} \n${row.date}`);
});
message.channel.send(embed)
Когда я ее запускаю, она печатает строку в консоли, но код для вставки пуст и имеет нет полей Проблема в том, что он отправляет встраивание до получения результатов от db.each()
db.each - это обратный вызов, а не обещание, поэтому я не могу использовать await
.then()
et c
Есть ли способ превратить обратный вызов в обещание, чтобы я мог использовать функцию asyn c
это полный консольный журнал, ошибок нет и c только строки
{
id: 1,
date: '2020-04-02',
userID: 'some user id',
action: 'WARN',
reason: 'some reason',
moderatorID: 'some user id'
}
{
id: 2,
date: '2020-04-02',
userID: 'some user id',
action: 'WARN',
reason: 'some reason',
moderatorID: 'some user id'
}