我正在使用node.js + Express + EJS。
在我的路线中,我正在访问外部API以获取一些数据:
router.get('/', function(req, res, next) {
var request = https.get(url + 'products.json', function(response){
var buffer = "",
route;
response.on("data", function (chunk) {
buffer += chunk;
});
response.on("end", function (err) {
// finished transferring data
// dump the raw data
console.log(buffer);
console.log("\n");
data = JSON.parse(buffer);
route = data;
});
});
res.render('index', {
title: 'Home',
products: JSON.stringify(data)
});
});
exports.router = router;
exports.products = data;
我的目标是将此数据变量传递给客户端。在我的app.js文件中设置-
app.locals.productsData = routes.products;
在我的index.ejs文件中,这就是我要尝试执行的操作-
<script>
var products = <%= products %>;
</script>
或类似的东西
<script>
var products = <%= {{productsData}} %>;
</script>
我似乎找不到找到传递这些数据的方法。
你能帮帮我吗?
您res.render
在错误的位置调用(数据将仅在以后request
发送end
事件时才具有其值。
因此,您需要res.render
在end
事件回调内部移动。
尝试
response.on("end", function (err) {
// finished transferring data
// dump the raw data
var data = JSON.parse(buffer);
res.render('index', {
title: 'Home',
products: JSON.stringify(data)
});
});
和
<script>
var products = "<%= products %>";
</script>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句