从客户端插入时,在 Meteor 服务器端丰富 Mongo 文档



我在文档中找不到任何内容,但是如果我遗漏了某些内容,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政策。

最新更新