Подтвердить что ты не робот

Ошибка 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'});
}
4b9b3361

Ответ 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