【问题标题】:Meteor: how to return an array subset from mongodbMeteor:如何从 mongodb 返回数组子集
【发布时间】:2016-05-02 13:33:13
【问题描述】:

好的,我在 MongoDB 中有一个流星项目的集合。文档太长,无法在此处发布,因此我将在集合中放入文档示例以说明我的观点:

_id: "RxBqDLxxPG89ngp9d",
name: "deck of cards",
deck: [
  {
   suit: "spades",
   value: "ace",
  },
  {
   suit: "spades",
   value: "king",
  },
  {
   suit: "spades",
   value: "queen",
  },
  {
   suit: "hearts",
   value: "ace",
  },
  {
   suit: "hearts",
   value: "king",
  },
  {
   suit: "hearts",
   value: "queen",
  }
]

(可以假设我完成了整个套牌,但这对于示例的目的并不重要) 所以我知道,如果我想在一个页面上获取所有这些人的名字,我必须在我正在使用的任何模板中编写一个帮助程序。

"displayCards": function(){ return deckOfCards.find().deck; }

然后在helper的html中:

{{#each displayCards}}
  <div class="card">{{value}} of {{suit}}</div>
{{/each}}

哪个会返回:

ace of spades
king of spades
queen of spades
ace of hearts
king of hearts
queen of hearts

这就是我最终提出问题的地方:
我想在每张卡片周围放置一个带有西装类别的 div。为此,我需要能够返回一个仅包含花色等于红桃或黑桃等元素的数组。或者我需要能够返回数组 13 的一部分(或两个,如果我们是只是按照我写的)卡片一次。有没有办法做到这一点?

【问题讨论】:

  • 你的问题很难理解。您能否更具体地说明您要在这里做什么?
  • 最终?我希望能够对一套西装进行样式更改,但不能对另一套进行样式更改。就目前而言,我没有办法将不同的西装放在不同的容器中,因为当我这样做时 {{#each}} 它会拉出数组的每个元素。我希望一次只能提取一个子集。
  • 我也应该清楚。我不能只使用$slice,因为在我运行的程序中,每个文档中有多个数组,所以当我运行deckOfCards.find({}, {deck: {$slice: 3}}) 时会限制数组如我所愿,但它也会返回其他所有内容,我只需要这个数组

标签: arrays mongodb meteor


【解决方案1】:

这是您可以对多个文档执行操作的方式。

您的帮助代码:-

"displayCards": function(){ 
     return deckOfCards.find()
 }

您的 html 代码:-

{{#each displayCards}}
     {{#each deck}}
          <div class="card">{{value}} of {{suit}}</div>
     {{/each}}
{{/each}}

因此,您只需在第二个#each 循环中通过您的办公桌。这就是你可以做到的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2014-05-28
    相关资源
    最近更新 更多