Node.js 节点js(带有ejs视图引擎)在视图上提供未定义的变量

Node.js 节点js(带有ejs视图引擎)在视图上提供未定义的变量,node.js,mongoose,pug,ejs,Node.js,Mongoose,Pug,Ejs,我已经为此工作了几个小时了,但还是一事无成。我有一个视图,它尝试动态创建geojson文件,并将其作为变量返回到节点视图。变量在到达res.render行之前不是空的,但是当它加载视图时,结果总是未定义的 app.get('mymap', function(req, res, next){ var featureCollection= { type : 'FeatureCollection', features : new Array()

我已经为此工作了几个小时了,但还是一事无成。我有一个视图,它尝试动态创建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 mymap = '<%- geojson%>';
应该是:

var mymap = '<%= geojson %>';
更准确地说,如果您想从服务器端读取Javascript对象,我建议将其作为JSON字符串传递:

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