如何添加温度。字段发布到流星发布

问题描述:

有什么办法在发布函数内的服务器上添加一个临时额外字段?我似乎无法观察或转换工作。如何添加温度。字段发布到流星发布

我对同一个集合“列表”有两个订阅。有些时候,我想订阅某些列表,以便他们可用于聊天室列表......但问题是他们显示在我的“列表”模板中。独特的部分是在服务器上的性能(大型阵列)。

理想情况下,我希望我可以添加一个额外的字段,如'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(); 
}); 

是的,这是可能的。看到我的答案在这里:How to 'transform' data returned via a Meteor.publish?

它基本上归结为在流星文档发布的扩展示例:http://docs.meteor.com/#meteor_publish

+0

谢谢!那很完美。我为以后的读者添加了上面的工作代码。 – SkinnyGeek1010