【问题标题】:How to iterate and parse JSON from query in Express/Jade?如何从 Express/Jade 中的查询中迭代和解析 JSON?
【发布时间】:2016-01-21 18:07:30
【问题描述】:

我是 nodejs 的新手,所以我认为这很简单,但我找不到将 JSON 数据从选择查询传递到 Jade 视图的方法。我正在使用 Node.js Tools for Visual Studio 创建使用 Express + Jade 的项目。这是我的index.js 文件:

exports.products = function (req, res) {
var request = new sql.Request(connection);
console.log("Connection successful.");
request.query('SELECT * FROM product', function (err, data) {
    console.log(data[i]);
    res.render('products', {
        title: 'Products', 
        year: new Date().getFullYear(), 
        message: 'Products page with all devices',
        name: 'Rodney',
        result: data[i]
    });    
});

这是我在 Jade 中用来渲染结果的视图:

- product = typeof(result) != 'undefined' ? result : { }
for p in product
  h3 #{product.Name}

我收到错误i is not defined,这是有道理的,但如果我将其更改为result: data[0],我只能显示 1 条记录。 以下是 JSON 结构的示例: { Id: 56, Name: 'Motion', ModelString: '1234-G', Description: 'Motion Front Door', Released: true, BoardId: 29, CreateDate: Wed Aug 05 2015 06:29:31 GMT-0500 (Central Daylight Time), SerialNumberCode: 'AAA', ExtensionId: 9, SKU: '1234-G', CurrentTest: false, ModelEncodingNumber: -1 }

如何显示name 列的所有记录?

【问题讨论】:

  • i 定义在哪里?

标签: javascript json node.js express


【解决方案1】:

您实际上可以像这样直接将数据转发到您的res.render 方法:

res.render('products', {
    ...
    products: data
});

// in view.jade
for p in product
    h3 #{product.Name}

如果您只需要产品的名称,您可以先遍历您的数据,收集名称并将它们存储在另一个列表中:

var allNames = data.map(function(element) {
    return element.Name;
})

res.render('products', {
    ...
    names: allNames
});  

// view.jade
for name in names
    h3 #{name}

【讨论】:

  • 非常好!我使用了您的第二种方法,并且像魅力一样工作。谢谢!
【解决方案2】:

您是否尝试过只传递data

编辑:

希望这可行

- productList = typeof(result) != 'undefined' ? 
result : { }
for product in productList
  for p in product
    h3 #{p.Name}

【讨论】:

  • 是的。当我传递数据时,我将输出输出到控制台,但不在视图本身中。那里什么都没有。
  • 我对“数据”的结构进行了疯狂的猜测。我更新了我的答案
  • 我更改了 result: data,然后在 Jade 端添加了您的代码,现在在 acorn.js 文件中出现 Unexpected token 错误。
  • 好的,如果你能把打印出的“数据”放在你的问题中,那会更有帮助。
  • 好的。你能再试一次吗?我做了一个小改动
猜你喜欢
  • 2012-07-19
  • 2017-02-26
  • 2016-08-28
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多