16

http://docs.meteor.com/#meteor_methods

サーバーフォルダーのpublish.jsで試しました。

Meteor.applyを正常に呼び出し、クライアントからサーバー呼び出しを試みています。私はいつも未定義の応答を受け取ります。

4

4 に答える 4

27

サーバーでの呼び出しMeteor.methodsは正しいです。これにより、特権環境で実行され、結果がクライアントに返されるリモートメソッドが定義されます。通常の結果を返すには、returnJSON値を使用してメソッド関数から呼び出すだけです。エラーを通知するには、をスローしMeteor.Errorます。

メソッド呼び出しは非同期であるため、クライアントではMeteor.apply常に。を返します。undefinedメソッドの戻り値が必要な場合は、最後の引数をコールバックにする必要があります。これには、通常の非同期コールバックスタイルのapply2つの引数とが渡さerrorれます。result

サーバーコードは実際に呼び出されていますか?メソッド内のDBを更新してクライアントのキャッシュが新しいデータを取得するかどうかを確認するかconsole.log、メソッド本体の内部から呼び出して端末の「meteor」プロセスの出力を確認することで、これを確認できます。

于 2012-04-14T20:02:44.180 に答える
20

私が定義できる場所はいくつかありますMeteor.methods()(賛否両論あり):

  1. サーバーのみ-クライアントがメソッドを呼び出すとき、クライアント側で何かが変更される前に、サーバーが応答するのを待つ必要があります
  2. サーバー上で、クライアント上でスタブを使用します-クライアントがメソッドを呼び出すと、クライアント側でスタブメソッドを実行します。これにより、(予測された)応答をすばやく返すことができます。サーバーが「実際の」応答で戻ってくると、サーバーはスタブによって生成された応答を置き換え、それに応じて他の要素を更新します。
  3. クライアントとサーバーの両方で同じメソッド-コレクションを処理するメソッドに一般的に使用されます。メソッドは実際にはクライアント側のスタブですが、このスタブはサーバー側の関数と同じであり、代わりにクライアントのキャッシュされたコレクションを使用しますサーバーの。そのため、スタブのようにすぐに更新されるように見えますが、推測ではもう少し正確だと思います。
于 2015-01-14T16:16:43.340 に答える
8

ここに短い例をアップロードしました。これの実用的な例が必要な場合は、https ://gist.github.com/2387816をご覧ください。

于 2012-04-14T21:06:32.217 に答える
4

一部の人がこの追加機能を利用できることを願っています。これは、 debergalisが説明したように、メソッドが主にサーバー上で実行されることを意図しているという問題を曇らせません。

クライアントでの使用Meteor.methods()も便利です。(セクションでも「スタブ」を探してくださいMeteor.call()...)これにより、クライアントはサーバー呼び出しの予想される効果を(同期的に)シミュレートできます。ドキュメントに記載されているように:

データベースミューテーター(挿入、更新、削除)はメソッドとして実装されているため、常にメソッドを使用します。(...)

クライアントでのスタブの使用を説明する別のセクションでは、サーバーでのメソッド呼び出しの理解が容易になる場合があります。

于 2013-02-14T00:28:53.220 に答える