mysql - Expressjs : Open view after foreach with mysql result.

标签 mysql express foreach pug

我正在尝试使用 mysql 查询的结果进行循环,并在该循环中执行一个新查询。循环遍历结果后,我想打开一个包含第一个和第二个查询结果的新 View 。

现在我的问题:循环工作正常,我可以打开新 View ,但是打开 View 时我只得到第一个查询的结果和第二个查询的一部分,它在运行第二个查询之前打开 View 时间。

我的代码:

 function getActivitiesDate(req,res, rows)
 {
var rows2 = [];
rows.forEach(function getoutput(item) {
    console.log("getActivitiesDate openend");
    connectionpool.getConnection(function(err, connection3) {
        console.log('Trying to connect to activities date');
        if (!err) {
            console.log('Trying to execute query for activities now'),
                connectionpool.query('SELECT * FROM CALENDAR_ACTIVITY WHERE ACTIVITY_ID =' + connection3.escape(item.ACTIVITY_ID),
                    function (err, rows2) {
                        if (err) {
                            console.error(err);
                            res.statusCode = 500;
                            res.send({
                                result: 'error',
                                err: err.code
                            });
                            connection3.release();
                            console.log('It doesnt work error 500');
                        }
                        if (rows2.length == 0) {
                            res.render('index', {title: 'Index - Calendar Activity not found'});
                        }
                        console.log('Show activities + dates');



                      //  connection3.release();
                    });
        } else {
            console.error('CONNECTION error: ', err);
            res.statusCode = 503;
            res.send({
                result: 'error',
                err: err.code
            });
            console.log('It does not work...');
        }
    });

});
console.log('This is the result of rows2Result: ');
console.log(rows2);
res.render('viewUserActivities', {activities:rows, activityDates:rows2 , title: 'Created activities'});

}

“rows”属性目前包含 2 行(这可能更多或更少,这就是我有“rows.forEach”的原因),但我不确定如何将“rows2”的结果传递给在每个结果都通过 foreach 循环循环之后的新 View 。

任何帮助将不胜感激。我不清楚,或者您需要更多信息,请随时询问。

最佳答案

我没有足够的代表来发表评论,因此我可能会误解这个问题,但是您可以在 forEach 回调完成后渲染 View 吗?

像这样:

function getActivitiesDate(req,res, rows)
{
var rows2 = [];
rows.forEach(function getoutput(item) {
console.log("getActivitiesDate openend");
connectionpool.getConnection(function(err, connection3) {
    console.log('Trying to connect to activities date');
    if (!err) {
        console.log('Trying to execute query for activities now'),
            connectionpool.query('SELECT * FROM CALENDAR_ACTIVITY WHERE ACTIVITY_ID =' + connection3.escape(item.ACTIVITY_ID),
                function (err, rows2) {
                    if (err) {
                        console.error(err);
                        res.statusCode = 500;
                        res.send({
                            result: 'error',
                            err: err.code
                        });
                        connection3.release();
                        console.log('It doesnt work error 500');
                    }
                    else if (rows2.length == 0) {
                        res.render('index', {title: 'Index - Calendar Activity not found'});
                    } else {
                          console.log('This is the result of rows2Result: ');
                          console.log(rows2);
                        res.render('viewUserActivities', {activities:rows, activityDates:rows2 , title: 'Created activities'});
                    console.log('Show activities + dates');

                    }

                  //  connection3.release();
                });
    } else {
        console.error('CONNECTION error: ', err);
        res.statusCode = 503;
        res.send({
            result: 'error',
            err: err.code
        });
        console.log('It does not work...');
    }
});

关于mysql - Expressjs : Open view after foreach with mysql result.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34344753/

相关文章:

php - 使用 PHP 获取 MYSQL 数据库表中的最后一个条目

node.js - npm 安装 https

node.js - 无法在 Express.js 中使用 connect-redis

javascript - 使用 isNaN(foo) 和 typeof foo !== number 时,.forEach 返回意外结果

c++ - 'for_each_n' 不是 C++17 中 'std' 的成员

Linq To Sql Multiple Where 在 Foreach 循环中搜索

php - 如何连接三个具有不相关数据的MySQL表?

java - 使用 getGeneratedKeys 在带有 Connector/J 的 MySQL 中批量插入

mysql - 创建 View ?

javascript - 如何区分express.js中路由的路径和参数?