2014-01-15 82 views
6

有什麼辦法在發佈函數內的服務器上添加一個臨時額外字段?我似乎無法觀察或轉換工作。如何添加溫度。字段發佈到流星發佈

我對同一個集合「列表」有兩個訂閱。有些時候,我想訂閱某些列表,以便他們可用於聊天室列表......但問題是他們顯示在我的「列表」模板中。獨特的部分是在服務器上的性能(大型陣列)。

理想情況下,我希望我可以添加一個額外的字段,如'forChat:true',以便我可以檢查列表模板中的內容,並只列出沒有'forChat'字段的列表。

目前我通過在每個列表中發送'喜歡'&'不喜歡'數組來避開它,因此列表模板可以檢查用戶的ID是否在其中。然而,由於長度〜=(用戶/ 2),這不會隨着時間(以及在移動設備上)而很好地擴展。

// ideal-ish pseudo code if we could return arrays: 

Meteor.publish('chats', function(id) { 
    lists = Listings.find(...).fetch(); 

    return lists.map(function(list){ 
     return list.forChat = true; 
    }); 
}); 

這甚至有可能嗎?這種哈克,但我想我可以將該字段添加到每個列表中,並在其他出版物上省略它。從下面接受的答案

工作代碼:

Meteor.publish('listingsForChats', function(id) { 
    var cursor = Listings.find(...); 

    // insert a temp `forChats:true` field to filter in listings template 
    cursor.forEach(function(doc) { 
     doc.forChats = true; 
     this.added('listings', doc._id, doc); 
    }, this); 

    this.ready(); 
}); 

回答