Javascript 我能';当i';m渲染
这是我的密码:Javascript 我能';当i';m渲染,javascript,node.js,Javascript,Node.js,这是我的密码: app.get('/index/:name',function(req, res){ connection.query('SELECT * FROM deneme',function(err, rows, fields){ if (err) throw err; var paragraf = rows; }); res.render('index', { title: req.params.name,
app.get('/index/:name',function(req, res){
connection.query('SELECT * FROM deneme',function(err, rows, fields){
if (err) throw err;
var paragraf = rows;
});
res.render('index', {
title: req.params.name,
para: paragraf
});
});
但节点无法从“res.render”内部访问“pararaf”变量。节点返回
ReferenceError:未定义Pararaf
如何从异步函数外部访问Pararaf变量?这不是异步方法结果的使用方式,因为在调用查询回调之前,行将不可用 请尝试:
app.get('/index/:name', function(req, res){
connection.query('SELECT * FROM deneme', function(err, rows, fields){
...
res.render('index', {
title: req.params.name,
para: rows
});
});
});
这样,一旦结果(行)可用,您就可以访问并呈现它们。以上代码只是示例,我还要查询两个sql查询。这是一种方式,但只适用于“一个”查询。如果要进行多个查询并希望呈现某种最终结果,则应链接回调函数。您还可以使用async()之类的库来帮助您完成此任务。请记住,节点遵循异步模型,当您调用“query”时,代码将继续执行下一行代码(调用“res.render”),它不会等待结果,这就是您需要将回调传递给查询函数的原因。不,您不能。如果将其定义为全局,则res.render可以找到变量,但在调用res.render时,变量值很可能未定义,因为在执行查询回调之前,数据将不可用。从某种意义上说,如果没有(github.com/caolan/async),我无法同时使用三个mysql查询?请更新您的问题,以查看至少到个查询,以充分了解您的问题。您可以在不异步链接回调的情况下执行相同的操作:connection.query(…,function(){connection.query(…,function(){…})