node js(使用ejs视图引擎)在视图上给出未定义的变量

时间:2014-07-21 06:36:00

标签: node.js mongoose pug ejs

我现在已经在这个工作了几个小时,但仍然无法到达任何地方。我有一个视图,试图动态创建一个geojson文件,并将其作为变量返回到节点视图。变量在到达res.render行之前不是空的,但是当视图加载时,结果总是未定义的。

app.get('mymap', function(req, res, next){
    var featureCollection= {
            type : 'FeatureCollection',
            features : new Array()
        };

    Shapes.find({'id' : 778899}, function(err, data){
            data.forEach(function(d){
                collection.features.push(d);
            });
            res.render('mymap.ejs', { geojson: featureCollection});
        });
});

这是我打电话来查看视图上是否有什么内容

 var mymap = '<%- geojson%>';
  alert('Current values ' + mymap.type);

不确定是什么问题..我甚至试图组建一个具有多个属性的变量,例如:

var test = { place: 'Here and There', size : 5555 }
res.render ('mymap.ejs', { geojson: test });

仍然没有任何反应。

1 个答案:

答案 0 :(得分:0)

嗯,你的代码中有一个拼写错误:

var mymap = '<%- geojson%>';

应该是:

var mymap = '<%= geojson %>';

更确切地说,如果你想从服务器端读取Javascript对象,我建议将它作为JSON字符串传递:

var mymap = JSON.parse('<%= JSON.stringify(geojson) %>');