在发布之前更改集合

时间:2013-03-19 21:52:07

标签: meteor

我想为发布到客户端的对象添加一个属性。

我的发布功能看起来像那样

Meteor.publish("forms", function() {
  return Forms.find();
});

我想做这样的事情

Meteor.publish("forms", function() {
  var forms = Forms.find();
  forms.forEach(function (form) {
     form.nbForms = 12;
  }

  return forms;
});

我希望forms中的所有文档都有一个新的count属性,并将其发送给客户。

但这显然不起作用。

谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

不确定它是否适用于您的情况,但您可能会使用Meteor 0.5.8引入的新转换收集功能

声明收藏时,请将此功能添加为第二个参数:

Forms = new Meteor.Collection("forms", {
     transform: function(f) {
         f.nbForms = 12;
         return f;
     }
});

但这将是服务器和客户端。我不知道是否有办法在发布上下文中定义转换函数。

答案 1 :(得分:1)

我认为您需要在Publish中执行与此Meteor计数示例类似的操作: How does the messages-count example in Meteor docs work?

我还在这里发布了一个问题,一旦得到答复就可以提供帮助。 Meteor有一个this.added可能有用,但我目前还不确定如何使用它。因此,问题如下: Meteor, One to Many Relationship & add field only to client side collection in Publish?