仅在服务器代码中更新meteor中的对象,而不是通过ddp api

时间:2015-06-02 12:25:59

标签: meteor

我正在使用流星。我想允许仅通过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

1 个答案:

答案 0 :(得分:2)

允许和拒绝规则only apply to updates from a client,这使得事情比你想象的要简单得多。

如果我理解您正在尝试正确执行的操作,那么您需要做的就是从所有false函数返回Picks.allow,这样就不会接受任何客户端写入。这不会阻止您从服务器端写入集合,因此如果您在Meteor.methods中进行了适当的验证,您可以随意对其中的集合执行任何操作,因为它们是服务器端代码,让用户通过Meteor.call调用更新。