Задать вопрос
@CK1002

Почему пустой массив после запроса в базу данных sqlite?

// players = [ ]
try {
        let players = [];
        const kills = message.guild.emojis.cache.find(emoji => emoji.name === "kills"),
            damage = message.guild.emojis.cache.find(emoji => emoji.name === "damage");
        return new Promise(resolve => {
            channel.members.map(async (member) => {
                await client.db.get(`SELECT * FROM players WHERE user_id='${member.id}'`, (err, player) => {
                    if (player) {
                        players.push(`[**${player.level}**] ${member} ${player.kills ? `${kills} **${player.kills}** ` : ''}${player.damage ? `${damage} **${player.damage}**` : ''}`)
                    } else {
                        players.push(`[**-**] ${member}`)
                    }
                })
            })
            resolve(players)
        })
  • Вопрос задан
  • 69 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@RokeAlvo
как минимум вот это в корне не верно
channel.members.map(async (member) => {})

тут не верное использование map как forEach - но это полбеды...
как вы ожидаете: внутри map делаете асинхронный запрос к базе, получаете player, кладете его в массив. После обработки все массива вызываете resolve(players)
что происходит: map пробегает по members, для каждого стартует промис с запросом, выполняется resolve() - отдает пустой массив, т.к. ни один из промисов еще не разрешился
Замените map на for ... of
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы