javascript - express : Render view after forEach gets completed

标签 javascript node.js express

我有正在循环内执行的更新查询。

我想在 forEach 循环完成迭代时渲染 View 。

代码:

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);
                    });
                })
            })

最佳答案

您可以使用索引:

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);
        });
    })
});

关于javascript - express : Render view after forEach gets completed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56145115/

相关文章:

javascript - "Error: MongooseError: Operation ` users.insertOne() ` buffering timed out after 10000ms",

javascript - 在 Express 中从一条路线重定向到另一条路线

node.js - 使用快速 session 的套接字 IO - socket.request.res undefined

javascript - 如何处理循环中的时刻日期?

javascript - 以 "/"结尾的剩余请求适用于 Chrome,不适用于 Firefox

javascript - Ember.js 等同于 .difference?

node.js - 在 Heroku 调度程序中插入 bash 命令

javascript - 使用 jQuery 更改超链接单击的 CSS 样式

node.js - 如何 stub 文件中未声明的对象的实例

javascript - 如何将 URL 放入 HTTP 请求中(作为查询字符串)?