第一个插件工作正常,但第二个插件在控制台中给出“插入失败:403 - 访问被拒绝”。自动订阅已启用,我在auth分支上。如何设置我的代码,以便我有一个客户端可以写入的服务器MongoDB?
People = new Meteor.Collection('people');
if (Meteor.is_server) {
People.insert({name: 'Bob'});
}
if (Meteor.is_client) {
People.insert({name: 'Bob'});
}
答案 0 :(得分:20)
因为您正在使用auth,所以您必须允许或拒绝尝试执行插入,更新,删除和提取的客户端。要解决此特定问题,您必须添加Collection.allow()以使客户端的插入工作。
if(Meteor.is_server) {
People.allow({
'insert': function (userId,doc) {
/* user and doc checks ,
return true to allow insert */
return true;
}
});
}
答案 1 :(得分:8)
在Collection People中使用方法allow()。此方法分配访问CRUD。
function adminUser(userId) {
var adminUser = Meteor.users.findOne({username:"admin"});
return (userId && adminUser && userId === adminUser._id);
}
Lugares.allow({
insert: function(userId, lugar){
return adminUser(userId);
},
update: function(userId, lugares, fields, modifier){
return adminUser(userId);
},
remove: function (userId, docs){
return adminUser(userId);
}
});
答案 2 :(得分:3)
我从项目中删除不安全包后遇到此错误。
meteor remove insecure
解决了我的问题。
Posts = new Meteor.Collection('posts');
Posts.allow({
insert: function(userId, doc) {
// only allow posting if you are logged in
return !! userId;
}
});
答案 3 :(得分:2)
如果您只有测试项目,例如simple-todos教程,您可以通过添加不安全的包来解决它
meteor add insecure