如何在 Nodejs 中呈现多个 sql 查询和数据

How to render multiple sql query and data in Nodejs

我在将多个数据查询呈现给 page.I 时遇到问题已经做了很多研究,但出现错误,例如无法查找查看我的代码如下:

app.get('/xem', function(req,res){
pool.query("SELECT * FROM phim WHERE slider = '1' ORDER BY id DESC Limit 9", function (error, result, client){
    if (!!error){
        console.log('Error query');
    } else {
        res.render('xem', {slider:result});
    }
});
pool.query("SELECT * FROM phim WHERE new = '1'", function (error, result, client){
    if (!!error){
        console.log('Error query');
    } else {
        res.render('xem', {new:result});
    }
}); 
});

当 运行 它代码我给出错误:

82|     <!-- END HEAD -->

83| <h1> ok </h1>

>> 84| <%= new %>

85| 

new is not defined

如何解决?

您编写的代码对于这两个查询都不正确。

您将始终获得第一个查询结果作为响应 在第一个查询结果中,您发送 slider 作为键并期望 name 作为响应

res.render('xem', {slider:result});

改成

res.render('xem', {new:result});

由于您给出的 name 密钥在第二个查询结果中,在您的情况下无法访问该密钥

您的方法有两个问题:

  1. res.render()结束http请求,多次调用会失败
  2. 你正在执行两个异步函数,你没有注意执行顺序

试试这个:

var async = require('async');
app.get('/xem', function(req,res){
    var final = {};
    async.series({
        slider: function(cb) {
            pool.query("SELECT * FROM phim WHERE slider = '1' ORDER BY id DESC Limit 9", function (error, result, client){
                cb(error, result);
            })
        },
        new: function(cb){
            pool.query("SELECT * FROM phim WHERE new = '1'", function (error, result, client){
                cb(error, result)
            })
        }
    }, function(error, results) {
        if (!error) {
            res.render('xem', results);
        }
    });
});

我不知道你的 pool 是否使用了 promises,以防万一此代码使用异步方法

谢谢大家。我成功了,示例代码:

app.get('/xem', function(req,res){
    pool.query("SELECT * FROM phim WHERE slider = '1' ORDER BY id DESC Limit 9", function (error, result, client){
        var result1 = result;
        link('https://drive.google.com/file/d/0BxG6kVC7OXgrQ1V6bDVsVmJMZFU/view?usp=sharing', function(data){
            var dataxem = data;
            pool.query("SELECT * FROM user", function (error, result, client){
                var user = result;
                res.render('xem', {slider:result1, link:data, user:user});
            });
        });
    });
})
app.use('/', (req,res) => {
    connection.query('select * from users', function(err, rows, fields){
      if(err) return;
      console.log(rows[0]);
      res.send(rows);
  });
});