出于安全原因,我想在将文档发布到客户端之前添加和删除文档属性,具体取决于某些动态计算。我关注Meteor documentation和此other SO question。
例如简单,假设我尝试将以下静态属性添加到每个文档(仅限SERVER SIDE):
var Docs = new Meteor.Collection('docs', {
transform: function (f) {
console.log('Tagging doc: ' + f._id);
f.myProp = 1;
return f;
}
});
由于一些奇怪的原因,这不起作用:
myProp
我没有尝试将transform
放在客户端和服务器上,因为在我的真实应用程序中,我无法在客户端上进行必要的计算。
答案 0 :(得分:2)
集合上的转换函数是为了方便而不是安全性 - 请注意,当您在游标上调用observeChanges
时,信息不会通过转换函数传递( 传递当你拨打observe
时通过转换。发布游标的默认方式是通过调用observeChanges
来实现。
如果要删除要发布的光标的字段,请使用集合中的fields
选项find
。如果您想要做一些更复杂的事情,如果您的发布函数调用added
,changed
和removed
本身而不是返回游标,则可以明确地执行您需要的任何计算。有关详细信息,请查看Meteor.publish
的文档。