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

Node.js/jade -- How can I pass mysql data as a local variable into inline javascript?

我的 Node 脚本中有这个:

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 放在局部变量赋值中,因为如果我不这样做,无论我试图将它放在模板中的哪个位置,都不会传递任何内容。有没有其他方法可以让我转换数据?

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

我最近 运行 和你一样关注这个问题。我认为指出几点会有所帮助:

来自节点的 mysql 库已经 returns 您的数据进入 json。你使用 stringify returns 它作为一个字符串;我相信这就是为什么您将该对象返回到控制台日志中的原因。尝试只返回 data:rows 并通过模板中的点语法符号访问数据。这对我有用。