Meteor.methods()
Meteor を使用して、 UI の即時更新を維持しながらサーバー側を使用するタイミングを理解しようとしています。
Andrew Scala の入門チュートリアルMeteor.methods()
から、データベース ドキュメントを更新および変更するときに使用する必要があると彼は主張しています。
データの変更や更新などの危険なことを行うすべての関数をサーバー上で定義し、クライアントにそれらの関数を呼び出して、通常の関数のように戻り値を取得させるという考え方です。クライアントは実装を見ることはなく、データを個人的に変更することもありません。サーバーがすべての作業を行います。
このアドバイスに従って、これをコードに実装しました。
サーバ側:
Meteor.methods({
addMovie: function(data) {
var movie = Movies.insert({name: data});
return movie;
},
...
クライアント側:
Template.movies.events = ({
'click #add-movie': function(e) {
var name = document.getElementById('movie-name').value;
Meteor.call('addMovie', name);
return false;
},
...
これは機能しますが、遅いです。Movies.insert()
クライアント側で呼び出した場合のように、UI はすぐには更新されません。ドキュメントは、問題を修正するために、クライアント側でスタブを作成できることを示しています。
クライアントでメソッドを呼び出すと、同じ名前のサーバー メソッドに関連付けられたスタブ関数が定義されます。メソッドのスタブを定義したくない場合は、定義する必要はありません。その場合、メソッド呼び出しは他のシステムのリモート プロシージャ コールと同じであり、サーバーからの結果を待つ必要があります。
しかし、これらのスタブはどのように見えるべきでしょうか? 基本的にサーバー側の方法と同じに見えるでしょうか? もしそうなら、ポイントは何ですか?Meteor.methods()
の使用と目的、スタブのポイント/使用、およびそれらの実装のより包括的な説明を探しています。
編集: David Greenspan は、 meteor-talkでの Meteor.methods() とスタブの使用を明確にするのに役立ちました。