2012-10-12 12 views
6

Meteor 4.2(Windows)を使用していますが、「更新が失敗しました:403 - アクセスが拒否されました。コレクション内のオブジェクトを更新します。不思議なことに私は新しいものを挿入するのに問題はなく、更新だけが失敗しています。 Meteor:制限付きコレクション内の文書を置き換えることができません

は、私は私のコレクションのすべてを "許可" してみました:

Maps.allow({ 
    insert: function() { return true; }, 
    update: function() { return true; }, 
    remove: function() { return true; }, 
    fetch: function() { return true; } 
}); 

しかし、それでもまだ、この更新が失敗した:私は確認することができます何か他のものが

Maps.update({ 
    _id: Session.get('current_map') 
}, { 
    name: $('#newMapName').val() 
}); 

ありますか?あるいは、私のコードが間違っていますか?私が前回のメテオ(< 4.0)を使ってプロジェクトをしていた前回は、

ありがとうございました。

PS:このアップデートを行うと、ローカルコレクションが更新され、UIの変更が表示されます。その後、サーバー側で変更が拒否されたため、エラーメッセージとともに非常に迅速に元に戻ります。

答えて

8

本当に構文は正しくありませんでした。それは前によく働いていたとして、なぜ私は本当に理解していない、とにかく、ここでは正常に動作コードです:

Maps.update({ 
    Session.get('current_map') 
}, { 
    $set: { 
     name: $('#newMapName').val() 
    } 
}); 
+0

$ setビット(保存するコンテンツを$ setで囲む必要があります)、私はちょうどこの問題に遭遇しました。あなたの答えに感謝しました。 –

+0

ありがとうございました。 D – Nick

0

それはあなたが「current_map」に保存しているものに関連していなければならないように思えるがセッション変数。それがdbオブジェクトの場合は、おそらく{_id:<mongo id here>}のように見えて、更新ファインダーが正しく機能するようになります。

は、私は同じ問題に遭遇し、ブロックIの

Blocks.update {_id:block_id}, {$set: params} 
のparamsは、すべてのビットのハッシュは、私が更新したいです

とBLOCK_IDを動作するようにされ、次のmongoオブジェクトIDを見つけました更新しようとしています。

(更新を点滅させて元に戻す)クライアント側の更新に関する注意事項は予期される動作です。 Data and Security sectionの下でドキュメントをチェックアウトした場合:

メテオールはかわいいトリックですが、クライアントがサーバーに書き込みを発行すると、サーバーの応答を待つことなく、ローカルキャッシュも即座に更新されます。これは、画面がすぐに再描画されることを意味します。サーバがアップデートを受け入れると、適切に動作するクライアントでほとんど何が起こるべきか、クライアントは変更を跳ね返り、ラウンドトリップが自分の画面を更新するのを待つ必要はありませんでした。サーバーが変更を拒否した場合、Meteorはクライアントのキャッシュにサーバーの結果をパッチします。

関連する問題