我正在使用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>
我似乎无法找到传递此数据的方法。
你可以帮帮我吗?答案 0 :(得分:1)
您在错误的地方呼叫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>