2015-04-22 1 views
5

У меня есть некоторые документы в моей базе:Meteor & Монго: addToSet вставив

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

Я использую это для вставки данных:

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

    } 
}); 

Затем я использую этот помощник для моего шаблона :

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

И в шаблоне:

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

Это работает perfecty, но у меня есть проблема:

Как вы видите, каждое изображение имеет идентификатор и URL ({{изображение}}), я уверен, нужно добавить URL изображения в «MyCollection» тоже для каждая карта (по клику).

Как это сделать?

И вторая проблема: Как разрешить дубликаты mongo в массиве «карт»?

ответ

3

Вы имеете в виду, что каждая карта имеет идентификатор и поле изображения? Полагаю, что так.

Вы можете добавить вложенные объекты в поля массива. Нравится

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

В шаблоне: {{#each cards}} {{this.id}}: {{this.image}}<br> {{/each}}

Для второй задачи: Вы можете использовать $push вместо $addToSet

 Смежные вопросы

  • Нет связанных вопросов^_^