Ошибка Meteor Mongo - отказ в доступе
Первая вставка отлично работает, а вторая дает "Вставить сбой: 403 - Доступ запрещен" в консоли. Автоматическая подписка включена, и я нахожусь в ветке auth. Как настроить мой код, чтобы у меня был сервер MongoDB, на который клиенты могут писать?
People = new Meteor.Collection('people');
if (Meteor.is_server) {
People.insert({name: 'Bob'});
}
if (Meteor.is_client) {
People.insert({name: 'Bob'});
}
Ответы
Ответ 1
Поскольку вы работаете с auth, вы должны разрешать или запрещать клиентам попытки делать вставки, обновления, удаления и выборки. Чтобы исправить эту конкретную проблему, вы должны добавить Collection.allow(), чтобы клиент вставлял работу.
if(Meteor.is_server) {
People.allow({
'insert': function (userId,doc) {
/* user and doc checks ,
return true to allow insert */
return true;
}
});
}
Ответ 2
Используйте метод allow() в коллекции People. Этот метод назначает доступ 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);
}
});
Ответ 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;
}
});
Ответ 4
Если у вас есть только тестовый проект, например, учебник simple-todos, вы можете решить его с добавлением небезопасного пакета
meteor add insecure