如何在Meteor中发布集合的视图/转换?

Phi*_*els 3 meteor

我已经收藏了

var Words = new Meteor.Collection("words");
Run Code Online (Sandbox Code Playgroud)

并发表它:

Meteor.publish("words", function() {
    return Words.find();
});
Run Code Online (Sandbox Code Playgroud)

这样我就可以在客户端上访问它了.问题是,这个集合会变得非常大,我只想发布它的变换.例如,假设我想发布一个名为"num words by length"的摘要,这是一个int数组,其中索引是单词的长度,item是该长度的单词数.所以

wordsByLength[5] = 12;
Run Code Online (Sandbox Code Playgroud)

表示有12个长度为5的单词.在SQL术语中,它是原始数据集上的简单GROUP BY/COUNT.我正在尝试在客户端上创建一个类似的模板

  • 你有N个长度为X的单词

每个长度.我的问题归结为"我的表格A中有我的数据,我想发布一个转换后的版本,B".

Aks*_*hat 21

更新您可以在服务器上转换集合,如下所示:

Words = new Mongo.Collection("collection_name"); 

Meteor.publish("yourRecordSet", function() {

  //Transform function
  var transform = function(doc) {
    doc.date = new Date();
    return doc;
  }

  var self = this;

  var observer = Words.find().observe({
      added: function (document) {
      self.added('collection_name', document._id, transform(document));
    },
    changed: function (newDocument, oldDocument) {
      self.changed('collection_name', oldDocument._id, transform(newDocument));
    },
    removed: function (oldDocument) {
      self.removed('collection_name', oldDocument._id);
    }
  });

  self.onStop(function () {
    observer.stop();
  });

  self.ready();

});
Run Code Online (Sandbox Code Playgroud)