【问题标题】:How can I add temp. fields to a Meteor publish我怎样才能添加温度。流星发布的字段
【发布时间】:2014-01-15 12:01:36
【问题描述】:

有没有办法在发布函数内的服务器上添加临时额外字段?我似乎无法观察或转换工作。

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

理想情况下,我希望我可以添加一个额外的字段,例如“forChat:true”,这样我就可以在列表模板中检查它,并且只提取没有“forChat”字段的列表。

目前我正在通过在每个列表中发送“喜欢”和“不喜欢”数组来绕过它,以便列表模板可以检查用户的 id 是否在其中。然而,由于长度 ~= (users / 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;
    });
});

这甚至可能吗?有点 hacky,但我想我可以在每个列表中添加该字段,并在其余出版物中省略它。

来自以下已接受答案的工作代码:

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(); 
});

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!!那很完美。我已经为以后的读者添加了上面的工作代码。
    猜你喜欢
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 2014-10-15
    • 2023-01-18
    • 2018-07-15
    相关资源
    最近更新 更多