http://docs.meteor.com/#meteor_methods
サーバーフォルダーのpublish.jsで試しました。
Meteor.applyを正常に呼び出し、クライアントからサーバー呼び出しを試みています。私はいつも未定義の応答を受け取ります。
http://docs.meteor.com/#meteor_methods
サーバーフォルダーのpublish.jsで試しました。
Meteor.applyを正常に呼び出し、クライアントからサーバー呼び出しを試みています。私はいつも未定義の応答を受け取ります。
サーバーでの呼び出しMeteor.methods
は正しいです。これにより、特権環境で実行され、結果がクライアントに返されるリモートメソッドが定義されます。通常の結果を返すには、return
JSON値を使用してメソッド関数から呼び出すだけです。エラーを通知するには、をスローしMeteor.Error
ます。
メソッド呼び出しは非同期であるため、クライアントではMeteor.apply
常に。を返します。undefined
メソッドの戻り値が必要な場合は、最後の引数をコールバックにする必要があります。これには、通常の非同期コールバックスタイルのapply
2つの引数とが渡さerror
れます。result
サーバーコードは実際に呼び出されていますか?メソッド内のDBを更新してクライアントのキャッシュが新しいデータを取得するかどうかを確認するかconsole.log
、メソッド本体の内部から呼び出して端末の「meteor」プロセスの出力を確認することで、これを確認できます。
私が定義できる場所はいくつかありますMeteor.methods()
(賛否両論あり):
ここに短い例をアップロードしました。これの実用的な例が必要な場合は、https ://gist.github.com/2387816をご覧ください。
一部の人がこの追加機能を利用できることを願っています。これは、 debergalisが説明したように、メソッドが主にサーバー上で実行されることを意図しているという問題を曇らせません。
クライアントでの使用Meteor.methods()
も便利です。(セクションでも「スタブ」を探してくださいMeteor.call()
...)これにより、クライアントはサーバー呼び出しの予想される効果を(同期的に)シミュレートできます。ドキュメントに記載されているように:
データベースミューテーター(挿入、更新、削除)はメソッドとして実装されているため、常にメソッドを使用します。(...)
クライアントでのスタブの使用を説明する別のセクションでは、サーバーでのメソッド呼び出しの理解が容易になる場合があります。