我使用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
为什么会发生这种情况?
谢谢!
答案 0 :(得分:0)
更新Mongo集合客户端时。更新首先在客户端minimongo
集合上进行。然后autorun
重新运行,新的客户端会发生变化。之后,更改将通过DDP推送到服务器。这是你得到错误的地方。错误发生后,autorun
不会重新运行。
所以基本上你依靠客户端数据来决定是否渲染管理页面。