2015-04-22 12 views
5

Tôi có một số tài liệu trong cơ sở của tôi:Meteor & Mongo: addToSet chèn

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

Tôi đang sử dụng này để chèn dữ liệu:

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

    } 
}); 

Sau đó, tôi đang sử dụng helper này cho mẫu của tôi :

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

Và trong mẫu:

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

này hoạt động perfecty, nhưng tôi có một rắc rối:

Như bạn thấy, tất cả các hình ảnh có id và url ({{image}}), tôi đang cần thêm url hình ảnh để 'mycollection' quá cho mỗi thẻ (khi nhấp chuột).

Làm cách nào để thực hiện?

Và vấn đề thứ hai: Làm thế nào để cho phép mongo chèn các bản sao vào mảng "thẻ"?

Trả lời

3

Bạn có nghĩa là mọi thẻ đều có trường id và hình ảnh? Tôi đoán vậy.

Bạn có thể thêm đối tượng lồng vào một trường mảng. Giống như số

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

Trong mẫu: {{#each cards}} {{this.id}}: {{this.image}}<br> {{/each}}

Đối với vấn đề thứ hai: Bạn có thể sử dụng $push thay vì $addToSet

Các vấn đề liên quan