2012-12-16 35 views
3

我找不到文档中的任何内容,但如果我错过了某些内容,有没有什么方法可以让Meteor在客户端发送到Mongo之前从服务器上的客户端编辑文档insert当从客户端插入时,在Meteor服务器端丰富Mongo文档?

此用例用于处理诸如设置时间戳和其他(仅用于服务器端使用)字段的内容,而不必将它们设置为客户端上文档的一部分。

最明显的方法是使用Meteor.call('addMyNewRecord', publicFields)然后insert仅仅从服务器端,但我很喜欢有在客户端的minimongo API,我希望避免call要求。我知道在CouchDB中你可以在他们的on-update处理程序中做一些基本的修改,但似乎找不到与Meteor/Mongo类似的东西。

回答

2

我终于找到a nice approach这样做,同时仍然在客户端使用minimongo接口。

似乎可以拦截insert和丰富的文件为Deny政策的一部分,就像这样:

myCollection.deny({ 
     insert: function(userId, doc) { 
      doc.created = new Date().valueOf(); 
      doc.creator = userId; 
      //other default fields 
      return false; 
     } 
    }); 

我试图做类似与update拒绝政策,以增加modified场,但这似乎没有以同样的方式工作。如上面链接的帖子所述,这不适用于Allow政策。

+1

不错的发现。这有点破解。我添加了一个功能请求,为此添加了一些内容。 –