新手求教:用mysql查询出数据之后,如何用变量保存这个数据数组,然后渲染到模板里?[已解决]
发布于 10 年前 作者 74sharlock 5802 次浏览 最后一次编辑是 8 年前 来自 问答

var conn = require(‘mysql’).createConnection({ host : ‘localhost’, port : ‘3306’, user : ‘root’, password : ‘’, database : ‘user’ }); var data = []; //查询结果还没有覆盖这个变量之前,它就已经被输出了,结果还是空数组 conn.query(‘select * from njs_userdata’,function(err,res,fields){ if(err){throw err;} console.log(res); data = res; //这里的值怎么放到下面的data里?在外部声明一个变量是不行的,因为异步的原因 conn.end(); }); router.get(’/’, function(req, res) {//如果在这里查询数据库,然后在回调里使用res.render()会报错 res.render(‘index’, { title: ‘Express’, data:data //这里如何取到数据库查到的数组? }); });

3 回复
router.get('/', function(req, res) {
	conn.query('select * from njs_userdata',function(err,res,fields){
    if(err){throw err;}
    console.log(res);
    data = res;
		res.render('index', {
            title: 'Express',
            data:data
        });
    conn.end();
  });
});

@leapon 大哥,我试过了,这么写就报错了.我当时首先就想到这种方法,尝试了不行

@lonso 谢谢各位,我找到问题了, router.get(’/’, function(req, res) {//这里面有个res的参数 conn.query(‘select * from njs_userdata’,function(err,res,fields){//这里面又有个res的参数 if(err){throw err;} console.log(res); data = res; res.render(‘index’, { title: ‘Express’, data:data }); conn.end(); }); }); 参数冲突了;

回到顶部