使用Jade迭代JSON

14

我正在尝试使用JADE迭代JSON文档。

我的服务器(运行node.js + express)在收到.get()请求时执行以下操作:

app.get('/search/', function(req,res){

  // Parse the query
  var dbQuery = url.parse(req.url, true).query;
  var product = dbQuery.product;
  var category = dbQuery.category;
  console.log('Searching for: ' + product + ' in ' + category);

  //Mongo DB setup then query
  var result;
  var server = new mongodb.Server('23.23.129.158', 27017, {});
  new mongodb.Db('militaryListDB', server, {}).open(function(err, client){
    if(err) throw err;

    var collection = new mongodb.Collection(client, 'products');
    collection.find({}).toArray(function(err, results){
      console.log(results);
      console.log(JSON.stringify(results));
      res.render('results', {result: JSON.stringify(results), title: 'Test'});
    });
  });
});

这就是它在客户端上呈现的样子。

[{"_id":"50738ebbe3d87c6beaddb6f2","name":"tv","category":"tech","cost":"30"}]
我已阅读了Jade的文档以迭代数组,我以为它也适用于JSON,但它并没有起作用。它只显示一个空格。当我尝试这样做时:

我已经阅读了jade文件迭代数组的文档,我认为这同样适用于JSON,但事实并非如此,代码无法正常工作,仅显示一个空格。当我尝试以下代码时:

extends layout
block content
  div#wrapper                 
    p #{results}

它将显示 JSON 文档。但是当我尝试这样做时,

extends layout
block content
  div#wrapper                 
    p #{results.name}

它显示了一个空白的空间,而应该显示的是“tv”。如果有人能帮助我理解如何迭代JSON文档,那就太棒了。

谢谢!

1个回答

30

你的代码中没有遍历 results 数组,为此你应该像这样做:

for result in results
     p #{result.name}

1
我忘记在我给出的示例代码中包含这个了。但是当我在服务器端去掉JSON.stringify()时它就可以工作了。 - Collin McGuire
5
感谢耶稣,终于找到了那个小代码片段。我甚至考虑用山羊血在建筑物侧面涂写“JADE SUCKS”。如果你想获得另一个勾号,请查看这个链接:http://stackoverflow.com/questions/20485595/how-do-i-send-on-object-from-mongodb-to-jade。谢谢! - Squirrl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接