我正在使用流星。我想允许仅通过picks
来自客户端到服务器的call
调用来更新DDP
集合中的对象,而不是通过通常的Meteor.isServer
api。
通过这种方式,我可以控制服务器中的确切更新功能,并为每次更新执行一些复杂的权限检查
支票Picks = new Mongo.Collection("picks");
Picks.allow({
insert: function (userId, pick) {
return userId && pick.owner === userId;
},
update: function (userId, pick, fields, modifier) {
return Meteor.isServer;
},
remove: function (userId, pick) {
if (userId !== pick.owner)
return false;
return true;
}
});
对于这种情况有用,还是不按我的想法行事?
dist
答案 0 :(得分:2)
允许和拒绝规则only apply to updates from a client,这使得事情比你想象的要简单得多。
如果我理解您正在尝试正确执行的操作,那么您需要做的就是从所有false
函数返回Picks.allow
,这样就不会接受任何客户端写入。这不会阻止您从服务器端写入集合,因此如果您在Meteor.methods
中进行了适当的验证,您可以随意对其中的集合执行任何操作,因为它们是服务器端代码,让用户通过Meteor.call
调用更新。