我想从服务器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
选项并且仅在客户端上运行,但我希望这可以从服务器发生。
答案 0 :(得分:1)
您可以使用find
唯一的问题是它也在客户端上执行。如果你能忍受,那就是一个解决方案。
另一种选择可能是在客户端添加unmanaged collection并从Meteor method获取内容
本地非托管集合不会存储在MongoDB中,您可以从Meteor.method
调用autorun
,而observe
可以在本地集合中使用。