MongoDB到Jade,通过Express

时间:2017-07-23 18:45:32

标签: javascript node.js mongodb express pug

我对如何通过Express最好地处理从一个源到另一个源的数据感到困惑。为了使这个尽可能短,我只是写一个关于我的问题的快速例子"。我已经尝试过阅读这篇文章,但由于这包含了很多部分,我已经在搜索中丢失了#34;在路上所以我认为我(可能)只是在问SO时会更好。

无论如何,让我们说我有一个像这样的MongoDB文档:

{
    "_id" : ObjectId("xxxYYY"),
    "cheese" : [ 
        {
            "value" : "true",
            "key" : "bleu",
            "table" : "cheeselist"
        }, 
        {
            "value" : "true",
            "key" : "gouda",
            "table" : "cheeselist"
        }
    ]
}

我"发送"通过我的控制器,将上面的奶酪设置为我的Mongo模型中的数组:

Cheese.find(function (err, docs) {
  var CheeseChunks = [];
  var chunkSize = 3;
  for (var i = 0; i < docs.length; i += chunkSize) {
    CheeseChunks.push(docs.slice(i, i + chunkSize));
  }
  res.render('api/index', {
    url: req.url,
    cheeses: CheeseChunks
  });
})

最后,我在我的Jade模板中使用它:

each cheeseRow in cheeses
.row: each cheese in cheeseRow
    .col-md-4
        each key in cheese.cheese
            p= JSON.stringify(key)

正如您所看到的,现在我看到值的唯一方法是对键进行字符串化,但后来我得到整个字符串而不仅仅是键值。我之所以感到困惑,主要是因为我认为我之前在工作流程中犯了一个错误,这使得它应该更加复杂。我是对的还是有一种简单的方法可以在Jade模板中解决它?或者我是否应该将字符串保存为MongoDB中的数组以外的其他内容?

提前致谢!

1 个答案:

答案 0 :(得分:0)

这应该给出你想要的输出:

Jade

each cheeseRow in cheeses
    .row: each cheese in cheeseRow.cheese
        .col-md-4
             p= cheese.value
        .col-md-4
             p= cheese.key
        .col-md-4
             p= cheese.table

输出:

<div class="row">
  <div class="col-md-4">
    <p>true</p>
  </div>
  <div class="col-md-4">
    <p>bleu</p>
  </div>
  <div class="col-md-4">
    <p>cheeselist</p>
  </div>
  <div class="col-md-4">
    <p>true</p>
  </div>
  <div class="col-md-4">
    <p>gouda</p>
  </div>
  <div class="col-md-4">
    <p>cheeselist</p>
  </div>
</div>