我正在尝试将数据从mongodb导入 jade 模板,以便在图表中显示它们。我正在使用 chart.js 内联脚本,以便在图表上呈现数据。所以来自Mongodb的数据在页面上,我可以像这样访问它:
each city in cities
p #{city.name}
以下是我将数据传递到页面的方式:
exports.index = function(req,res){
var cities = City.find({}).limit(20);
cities.exec(function(err,doc) {
res.render("index",{cities:doc});
});
};
我用 php 创建了相同的应用,只需将数据传递到页面并将数据注入javascript图形( with json_encode )
Here is final result with php:
很简单,因为 php 数据是HTML页面的全局数据。如何用 Jade ?
来做到这一点由于
答案 0 :(得分:2)
啊,所以你的目标是既使用城市数据在服务器上生成HTML,又使其在浏览器中作为原始javascript对象数据使用。为此,您将其格式化为JSON并将其填充到<script>
标记中。有一些模块可以帮助解决这个问题,例如sharify,
但是你的玉器模板中的基本思想是这样的:
在快递路线处理程序中javascript:
exports.index = function(req,res){
var cities = City.find({}).limit(20);
cities.exec(function(err,doc) {
//There are tricky rules about safely embedding JSON within HTML
//see http://stackoverflow.com/a/4180424/266795
var encodedCityData = 'window.cities = ' + JSON.stringify(cities)
.replace(/</g, '\\u003c')
.replace(/-->/g, '--\\>');
res.render("index",{cities:doc, encodedCityData: encodedCityData});
});
};
在您的玉石模板中:
script!= encodedCityData
在浏览器中,您可以通过已设置到cities
对象的window
变量访问数据。