我有正在循环内执行的更新查询。
我想在 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/