【问题标题】:Calling a function without passing arguments meteor app在不传递参数的情况下调用函数 meteor app
【发布时间】:2014-06-09 08:28:09
【问题描述】:

通过发现流星(第 92 页)工作,一节介绍了此代码:

Posts.allow({
    update: ownsDocument,
    remove: ownsDocument
});

ownsDocument = function(userId, doc) {
    return doc && doc.userId === userId;
}

您可能已经猜到了代码本身只允许用户根据“ownsDocument”返回真或假来更新/删除他们自己的帖子。我不明白当它似乎没有将参数传递给函数时,简单地调用“ownsDocument”如何成功地完成任何事情。 ownsDocument如何在没有出现时返回true或false Posts.allow在被调用时传递了userId/doc?

编辑:删除示例代码中的杂散分号

【问题讨论】:

    标签: javascript node.js meteor


    【解决方案1】:

    Meteor 自动将 userIddoc 参数传递给您分配给传递给 allowupdateremove 键的任何函数对象。您发布的代码与以下代码相同:

    Posts.allow({
        update: function(userId, doc) {
            return doc && doc.userId === userId;
        },
        remove: function(userId, doc) {
            return doc && doc.userId === userId;
        }
    });
    

    ownsDocument 函数不会在您的代码中被调用。 allow 函数通知 Meteor 在 Post 更新或删除时调用该函数。

    【讨论】:

      【解决方案2】:

      [...] 当它没有出现时 Posts.allow 在被调用时传递了 userId/doc?

      它在哪里被调用?

      在您的示例中,ownsDocument 根本不被称为 。您所做的只是配置在updateremove 的情况下应该调用哪些函数。

      这些函数在其他地方在不同的时间被调用,在那里它们将被传递正确的参数。


      这就像事件处理程序一样。 foo.onclick = bar; 不会调用 bar。它将对函数的引用分配给foo.onclick,以便可以在一段时间后调用该函数。并且在那一刻,该函数将被传递一个事件对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-10
        • 2019-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多