如何在Express / Jade中从查询中迭代和解析JSON?

时间:2015-10-22 12:47:18

标签: javascript json node.js express

我是nodejs的新手,所以我认为这很简单,但我找不到将JSON数据从select查询传递到Jade视图的方法。我正在使用Visual Studio的Node.js工具来创建使用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的所有记录?

2 个答案:

答案 0 :(得分:1)

您实际上可以直接将数据转发到NSOperationQueue.currentQueue()!方法,如下所示:

res.render

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

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

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

答案 1 :(得分:0)

您是否尝试过data

编辑:

希望这有效

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