如何在发布中从服务器向文档添加字段而不保存?

时间:2013-06-16 16:08:24

标签: meteor

我想从服务器Meteor.publish添加并返回一个计算字段,该字段实际上并不存在于MongoDB中。这可能吗?像格式化降价的地方:

  Meteor.publish('recentEdits', function(pageId) {
    var edits, formattedContent;
    edits = WikiEdits.find({pageId: pageId}, {sort: {ts: -1},
      limit: RECENT_EDIT_LIMIT});
    edits.forEach(function(edit) {
      formattedContent = marked(edit.content);
      edit.formattedContent = formattedContent;
    });
    return edits;
  });

对于客户端来说,formattedContent字段似乎与其他字段一样,但它实际上并不在MongoDB中。这是可能的,如果是这样,最好的方法是什么?即使我应该存储formattedContent,我仍然想知道如何做到这一点。

我尝试使用transform中的Meteor.Collection选项并且仅在客户端上运行,但我希望这可以从服务器发生。

1 个答案:

答案 0 :(得分:1)

您可以使用find

transform选项

唯一的问题是它也在客户端上执行。如果你能忍受,那就是一个解决方案。

另一种选择可能是在客户端添加unmanaged collection并从Meteor method获取内容

本地非托管集合不会存储在MongoDB中,您可以从Meteor.method调用autorun,而observe可以在本地集合中使用。