在 Node.js 中使用 Express 制作的服务器中,我有以下用于处理 GET 请求的代码:
function articleReturner(celien) { // function querying a database (celien is a string, cetarticle is a JSON)
Article.findOne({ lien: celien}, function (err, cetarticle){
console.log(cetarticle); // it works
return cetarticle;
});
}
app.get('/selection/oui/', function(req, res) { // the URL requested ends with ?value=http://sweetrandoms.com, for example
var celien = req.param("value"); //
console.log(celien); // it works
articleReturner(celien); // calling the function defined above
res.render('selection_form.ejs', cetarticle); // doesn't work!
});
我知道服务器正确获取了来自 URL 路由的数据,因为控制台正确显示了 celien
(字符串)。我还知道函数articleReturner(celien)
正在正确查询数据库,因为控制台正确显示cetarticle
(JSON)。
但是 res.render('selection_form.ejs', cetarticle);
不起作用,控制台显示 ReferenceError: cetarticle is not Define
...我是什么丢失的?谢谢!
最佳答案
函数articleReturner是异步执行的,并且return cetarticle;
没有多大意义。您需要使用回调或 promise 。下面是使用回调从articleReturner返回结果的代码:
function articleReturner(celien, callback) {
Article.findOne({ lien: celien}, function (err, cetarticle){
console.log(cetarticle);
callback(err,cetarticle);
});
}
app.get('/selection/oui/', function(req, res) {
var celien = req.param("value"); //
console.log(celien); // it works
articleReturner(celien, function(err, cetarticle){
res.render('selection_form.ejs', cetarticle);
});
});
关于javascript - 在 Node.js Express 服务器 : res. render(file.ejs, data) 中处理 GET 请求由于未定义数据而无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23531685/