【问题标题】:Enrich Mongo documents in Meteor server-side when inserted from client-side?从客户端插入时在 Meteor 服务器端丰富 Mongo 文档?
【发布时间】:2012-12-16 01:11:17
【问题描述】:

我在文档中找不到任何内容,但万一我遗漏了什么,Meteor 有什么方法可以在发送到 Mongo 之前从服务器上的客户端丰富文档 inserted。

这个用例是处理诸如设置时间戳和其他(仅供服务器端使用)字段之类的事情,而不必将它们设置为客户端文档的一部分。

显而易见的方法是仅在服务器端使用Meteor.call('addMyNewRecord', publicFields) 然后insert,但我非常喜欢在客户端使用minimongo api,我希望避免call 的要求。我知道在 CouchDB 中,您可以在他们的 on-update 处理程序中进行一些基本修改,但似乎无法为 Meteor/Mongo 找到类似的东西。

【问题讨论】:

    标签: mongodb meteor


    【解决方案1】:

    我终于找到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 Deny 策略来添加modified 字段,但这似乎并不相同。如上面链接的帖子中所述,这不适用于 Allow 政策。

    【讨论】:

    • 不错的发现。这是一个黑客攻击。我添加了一个功能请求,以便为此添加一些内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 2014-02-18
    相关资源
    最近更新 更多