Node.js / jade – 我如何将mysql数据作为本地variables传递给内联javascript?

我的节点脚本有这个在它:

var connection = mysql.createConnection(...); connection.connect(); connection.query(/*sql query*/, function(err, rows, fields){ app.get('/', function(req, res){ res.render('index', { data: JSON.stringify(rows) }); }); }); 

那么如果我在我的Jade模板中这样做:

 body p !{data} 

它完全按照您的预期显示MySql查询中的数据。 但是如果我这样做:

 body script(type='text/javascript'). console.log(!{data}); 

它给了我[Object, Object, Object, Object....

为什么它是不同的解释,如果它是客户端Javascript的一部分? 我该如何解决这个问题?

我把JSON.stringify放在局部variables赋值中,因为如果我不这样做,无论我在哪个模板中试图放置它,都不会传递。 有没有另外一种方法可以改变数据呢?

你应该给一个索引像console.log(!{data[1]}); 在控制台中查看对象

我最近遇到像你这样的问题。 我认为指出一些事情会有所帮助:

来自节点的mysql库已经将你的数据返回给json。 你使用stringify返回它作为一个string; 我相信这就是为什么你把这个对象回到控制台日志中。 尝试只返回数据:行和通过您的模板中的点语法符号访问数据。 这是为我工作。