2016-05-01 7 views
0

Okay, ich habe eine Sammlung in MongoDB für ein Meteor-Projekt. Ein Dokument ist zu lang, um hier zu posten, damit ich werde einfach in der Sammlung in einem Beispiel eines Dokuments lege meinen Punkt herüber zu erhalten:Meteor: wie man eine Array-Teilmenge von mongodb zurückgibt

_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", 
    } 
] 

(man davon ausgehen kann, dass ich das ganze Deck tat, aber es ist für die Zwecke des Beispiels nicht wichtig) Und so weiß ich, dass, wenn ich Namen von all jenen auf einer Seite bekommen wollte, ich einen Helfer in welcher Schablone schreiben müsste, mit der ich arbeite.

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

Und dann in den HTML-Code des Helfers:

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

Welche zurückkehren:

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

Also hier ist, wo ich endlich auf meine Frage bekommen:
Ich möchte Legen Sie ein Div mit einer Klasse von Anzug um jede Kartenfarbe. Um dies zu tun, muss ich in der Lage sein, entweder nur die Elemente zurückzugeben, wo die Farbe gleich Herz oder Pik ist, usw. ODER Ich muss in der Lage sein, ein Stück des Arrays 13 (oder zwei, falls wir es sind) zurückzugeben einfach gehen, was ich geschrieben habe) Karten auf einmal. Gibt es eine Möglichkeit, dies zu tun?

+0

Ihre Frage ist schwer zu verstehen. Könnten Sie bitte genauer angeben, was Sie hier versuchen? – styvane

+0

letztlich? Ich möchte Stiländerungen an einem Anzug vornehmen können, aber nicht am anderen. So wie es jetzt aussieht, habe ich keine Möglichkeit, die verschiedenen Anzüge in andere Container zu legen, denn wenn ich {{#each}} mache, zieht es jedes Element des Arrays heraus. Ich möchte in der Lage sein, jeweils nur eine Teilmenge zu ziehen. –

+0

Ich sollte auch klar sein. Ich kann nicht einfach $ slice verwenden, weil in dem Programm, das ich ausführe, mehrere Arrays in jedem Dokument vorhanden sind. Wenn ich also deckOfCards.find ({}, {deck: {$ slice: 3}}) verwende, wird das Array begrenzt wie ich will, aber es wird auch alles andere zurückgeben, und ich brauche nur dieses eine Array –

Antwort

0

So können Sie die Operation für mehrere Dokumente ausführen.

Ihr Helfer Code: -

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

Ihre HTML-Code: -

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

So müssen Sie nur noch Ihren Schreibtisch in der zweiten #each Schleife passieren. So kannst du das machen.

Verwandte Themen