Node.js / jade - 如何将mysql数据作为局部变量传递给内联javascript?

时间:2015-08-30 07:37:20

标签: javascript mysql node.js express pug

我的节点脚本中包含此内容:

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放在局部变量赋值中,因为如果我没有,那么无论我试图把它放在模板的哪个地方,都不会传递任何东西。是否有其他方式可能会改变数据?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我最近和你一样遇到过这个问题。我认为指出一些事情会很有帮助:

来自节点的mysql库已将您的数据返回到json。你使用stringify将其作为字符串返回;我相信这就是为什么你在控制台日志中获取该对象的原因。尝试只返回数据:行和通过模板中的点语法表示法访问数据。这对我有用。