Экспресс: представление рендера после завершения forEach - PullRequest
2 голосов
/ 15 мая 2019

У меня есть запрос на обновление, который выполняется внутри цикла.

Я хочу отобразить представление, когда цикл forEach завершает итерацию.

код:

conn.query(`SELECT Id, ${sfColumn} from Lead`, function (err, result) {
                if (err) { return console.error(err) }

                var resultData = result.records

                resultData.forEach(element => {

                    var sfColumnValue = null
                    if (element[sfColumn] == null) {
                        sfColumnValue = null
                    } else {
                        sfColumnValue = "'" + element[sfColumn] + "'"
                    }

                    var updateSql = `UPDATE leads SET ${localColumn} = ${sfColumnValue} WHERE sid = '${element.Id}'`

                    dbConfig.varConnection[dbName].query(updateSql, function (err, data) {
                        if (!err) {
                            console.log("data", data)
                            // res.render('updated.ejs')
                        }
                        else
                            console.log('Error while performing Query.', err);
                    });
                })
            })

1 Ответ

4 голосов
/ 15 мая 2019

Вы можете использовать индекс:

resultData.forEach((element, index) => {
    /*...*/
});

, а затем добавьте это условие для отправки ответа:

if (index === resultData.length - 1) {
    res.render('updated.ejs')
}

Полный код:

conn.query(`SELECT Id, ${sfColumn} from Lead`, function (err, result) {
    if (err) { return console.error(err) }

    var resultData = result.records

    resultData.forEach((element, index) => {

        var sfColumnValue = null
        if (element[sfColumn] == null) {
            sfColumnValue = null
        } else {
            sfColumnValue = "'" + element[sfColumn] + "'"
        }

        var updateSql = `UPDATE leads SET ${localColumn} = ${sfColumnValue} WHERE sid = '${element.Id}'`

        dbConfig.varConnection[dbName].query(updateSql, function (err, data) {
            if (!err) {
                console.log("data", data)
                if (index === resultData.length - 1) {
                    res.render('updated.ejs')
                }
            }
            else
                console.log('Error while performing Query.', err);
        });
    })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...