来自客户端的流星更新mongodb

时间:2015-07-29 20:07:56

标签: javascript mongodb meteor permissions

我使用Meteor构建了一个应用程序,我很惊讶我可以从客户端更新我的Meteor.user()集合。

在我的collections.js文件中,我有:

Meteor.users.allow({
update: function(userId, doc) {
    return false;
}
});

我导航到只有isAdmin: true用户可以在我的客户端控制台中访问和输入的页面:

Meteor.users.update({_id: 'adsfasdf'}, {$set: {isAdmin: true}});

之后,管理页面立即加载。

控制台输出为:

Meteor.users.update({_id: 'adsfasdf'}, {$set: {isAdmin: true}}); 1 debug.js:41 update failed: Access denied

为什么会发生这种情况?

谢谢!

1 个答案:

答案 0 :(得分:0)

更新Mongo集合客户端时。更新首先在客户端minimongo集合上进行。然后autorun重新运行,新的客户端会发生变化。之后,更改将通过DDP推送到服务器。这是你得到错误的地方。错误发生后,autorun不会重新运行。

所以基本上你依靠客户端数据来决定是否渲染管理页面。