2015-04-22 19 views
5

Ich habe einige Dokumente in meine Basis:Meteor & Mongo: addToSet Einfügen

//example docs 
{"_id": "qwerty12345", "name": "Bob", "cards":["cardId1", "cardId2", "cardId3"]} 

ich dies mit für Einfügen von Daten:

Template.insert.events({ 
    'click add': function(){ 
     if(confirm("Add card?")); 
     mycollection.update({_id: Session.get('fooId')}, { $addToSet: { cards: this._id}}) 

    } 
}); 

Dann verwende ich diese Helfer für meine Vorlage :

Template.index.helpers({ 
    cards: function(){ 
     query = mycollection.findOne({_id: Session.get('fooId')}); 
     return query.cards; 
    } 
}); 

Und in Vorlage:

<img src="{{img}}" class="add"> 
{{#each cards}} 
{{this}}<br> 
{{/each}} 

Dies funktioniert perfecty, aber ich habe ein Problem:

Wie Sie sehen, jedes Bild-ID und URL haben ({{image}}), ich bin benötigen Bild-URL zu 'mycollection' auch addieren für jede Karte (auf Klick).

Wie man es macht?

Und das zweite Problem: Wie können Mongo-Duplikate in "Karten" -Array einfügen?

Antwort

3

Meinst du, jede Karte hat ID und Bildfeld? Ich denke schon.

Sie können verschachtelte Objekte zu Array-Feldern hinzufügen. So

mycollection.update({_id: Session.get('fooId')}, { $addToSet: { cards: {id: this._id, image: this.image}}}).

In der Vorlage: {{#each cards}} {{this.id}}: {{this.image}}<br> {{/each}}

Für zweites Problem: Sie können $push anstelle von $addToSet