Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не правильный цикл (https://javascript.ru/forum/misc/72624-ne-pravilnyjj-cikl.html)

SpaceAlarm 12.02.2018 22:41

Не правильный цикл
 
function get() {
    ts.send("clientlist", (err, response) => {
        if (err) {
            console.error('failed:', err);
        }
        let list = response;

        for (let i = 0; i < list.length; i++) {
            let client = list[i].clid;
            ts.send("info", { clid: client }, (err, response) => {
                mysql.query(`SELECT id, name FROM users WHERE id = '${response.id}'`, (err, rows, fields) => {
                    console.log(rows.length)
                });
            });
        }
    });
}

В БД 4 записи!

На выходе я имею:
3
1
3
3
3
Как мне получить результат 1 раз, но в цикле эта функция?

laimas 13.02.2018 04:33

Не знаю я Node, но так насиловать базу, это запредельно. Здесь не должно быть цикла вообще. Нужно подготовить данные для запроса, обязательно отфильтровав их, как массив id, который подставить в запрос, объединив его элементы через запятую id_array.join(','):

SELECT id, name FROM users WHERE id IN(id_string)

В кавычки числовые значения заключать не обязательно. А уже результат запроса rows, это будет массив объектов и rows.length, это количество возвращенных записей. И вот тут нужен цикл для rows чтобы получить данные из каждой записи.


Часовой пояс GMT +3, время: 09:12.