12

最初の挿入は正常に機能しますが、2 番目の挿入ではコンソールに「挿入に失敗しました: 403 -- アクセスが拒否されました」と表示されます。自動サブスクライブが有効になっていて、私は auth ブランチにいます。クライアントが書き込み可能なサーバー MongoDB を持つようにコードを設定するにはどうすればよいですか?

People = new Meteor.Collection('people'); 

if (Meteor.is_server) {
People.insert({name: 'Bob'});
}
if (Meteor.is_client) {
People.insert({name: 'Bob'});
}
4

4 に答える 4

21

authを使用しているため、挿入、更新、削除、およびフェッチを実行しようとするクライアントを許可または拒否する必要があります。この特定の問題を修正するには、Collection.allow()を追加して、クライアントの挿入を機能させる必要があります。

if(Meteor.is_server) {

  People.allow({
    'insert': function (userId,doc) {
      /* user and doc checks ,
      return true to allow insert */
      return true; 
    }
  });

}
于 2012-10-09T00:02:54.407 に答える
8

コレクション 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);
  }
});
于 2013-07-16T12:09:47.833 に答える
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;
  }
});
于 2015-11-18T19:23:34.113 に答える