我在文档中找不到任何内容,但是如果我遗漏了某些内容,Meteor中是否有任何方法可以在将文档发送到Mongo之前从服务器上的客户端insert
丰富文档。
这样做的用例是处理诸如设置时间戳和其他(仅供服务器端使用)字段之类的事情,而无需将它们设置为客户端文档的一部分。
显而易见的方法是仅从服务器端使用Meteor.call('addMyNewRecord', publicFields)
然后insert
,但我非常喜欢在客户端使用 minimongo api,我希望避免call
要求。我知道在CouchDB中,您可以在其on-update
处理程序中进行一些基本的修改,但似乎找不到类似Meteor/Mongo的内容。
我终于找到了一个很好的方法来做到这一点,同时仍然在客户端使用 minimongo 接口。
作为Deny
策略的一部分,您似乎可以拦截insert
并丰富文档,如下所示:
myCollection.deny({
insert: function(userId, doc) {
doc.created = new Date().valueOf();
doc.creator = userId;
//other default fields
return false;
}
});
我尝试使用 update
拒绝策略做类似的事情来添加一个modified
字段,但这似乎以不同的方式工作。如上面链接的帖子中所述,这不适用于Allow
政策。