调用函数而不传递参数meteor app

时间:2014-06-09 00:13:45

标签: javascript node.js meteor

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

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

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

您可能已经猜到的代码本身只允许用户更新/删除自己的帖子,具体取决于“ownsDocument”是返回true还是false。我不知道如何简单地调用“ownsDocument”成功完成任何事情,因为它似乎没有将参数传递给函数。当ownsDocument没有出现时,它如何返回true或false.Posts.allow在被调用时传递userId / doc?

编辑:在示例代码中删除了散列分号

2 个答案:

答案 0 :(得分:1)

Meteor会自动将userIddoc参数传递给您分配给传递给update的{​​{1}}和remove个键的任何函数对象。您发布的代码与:

相同
allow

您的代码中未调用Posts.allow({ update: function(userId, doc) { return doc && doc.userId === userId; }, remove: function(userId, doc) { return doc && doc.userId === userId; } }); 函数。 ownsDocument函数会在allow更新或删除时通知Meteor调用该函数。

答案 1 :(得分:0)

  

[...]当它没有出现时,Posts.allow正在调用userId / doc吗?

它在哪里被召唤?

在您的示例中,ownsDocument未被称为 。您所做的只是配置应在updateremove案例中调用哪些函数。

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


它与事件处理程序一样。 foo.onclick = bar;不会致电bar。它为foo.onclick指定了对函数的引用,以便稍后可以将该函数调用 。在那一刻,该函数将被传递一个事件对象。