通过发现流星(第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?
编辑:在示例代码中删除了散列分号
答案 0 :(得分:1)
Meteor会自动将userId
和doc
参数传递给您分配给传递给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
未被称为 。您所做的只是配置应在update
和remove
案例中调用哪些函数。
这些函数在其他地方被称为 和,在不同的时间,在那里它们将被传递正确的参数。
它与事件处理程序一样。 foo.onclick = bar;
不会致电bar
。它为foo.onclick
指定了对函数的引用,以便稍后可以将该函数调用 。在那一刻,该函数将被传递一个事件对象。