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 //这里如何取到数据库查到的数组? }); });
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(); }); }); 参数冲突了;