3

出于安全原因,我想在将文档发布到客户端之前添加和删除文档的属性,具体取决于一些动态计算。我遵循Meteor 文档其他 SO question

例如简单性,假设我尝试将以下静态属性添加到每个文档(仅限服务器端):

var Docs = new Meteor.Collection('docs', {
    transform: function (f) {
        console.log('Tagging doc: ' + f._id);
        f.myProp = 1;
        return f;
    }
});

由于某些奇怪的原因,这不起作用:

  1. 只有一些文档触发了转换功能,而不是全部(我可以通过控制台日志看到这一点)
  2. 在客户端,没有任何文档被标记为myProp

我没有尝试将其transform放在客户端和服务器上,因为在我现实生活中的应用程序中,我无法在客户端上进行必要的计算。

4

1 回答 1

2

集合上的转换函数是为了方便,而不是安全 - 请注意,当您调用observeChanges游标时,信息不会通过转换函数传递(它在调用通过转换传递observe)。发布游标的默认方式是调用observeChanges它。

如果您想删除您正在发布的光标的字段,请使用您的集合上的fields选项。find如果你想做一些更复杂的事情,你可以显式地做任何你需要的计算,如果你的发布函数调用added,changedremoved它本身,而不是返回一个游标。有关详细信息,请查看文档Meteor.publish

于 2013-05-13T17:58:03.613 回答