今回は,
Meteorアプリケーションでは,
その仕組みは,
前回,
publish/subscribeによるデータ同期
Meteorでは,Meteor.
とMeteor.
を使用し,
publish
とsubscribe
の説明のため,
var Employees = new Meteor.Collection('employees');
サーバ側で実行されるMeteor.
は,
Meteor.publish("emp", function () {
// 60歳以上の従業員データを返す
return Employees.find({ age: { $gte: 60 }});
});
引数として渡す関数オブジェクトは,
対してMeteor.
はクライアント側で呼び出され,publish
によって公開されたデータを
Meteor.subscribe('emp');
ここに挙げた例では,
publish
とsubscribe
は,
Meteor.publish()
Meteor.
の定義は以下のとおりです。
Meteor.publish(name, func)
- name…名前を表す文字列。クライアントがサブスクライブを行う際に,
この名前が使用される。 - func…この関数は,
クライアントからのサブスクライブが行われるたびに呼び出されます。
第二引数func
の目的は,Meteor.
)
Meteor.publish("emp", function () {
// 60歳以上の従業員データを返す
return Employees.find({ age: { $gte: 60 }});
});
もうひとつの方法としては,publish
内でコレクションに変更を行い,publish
内のthis
オブジェクトが持つ以下のようなメソッドを通じて行います。
added(collectionName, id, fields)
- …コレクション名,
ドキュメントのID (_idフィールド), 追加されたドキュメント (JavaScriptオブジェクト) を引数に取り, ドキュメントが追加されたことをクライアントに通知します。 changed(collectionName, id, fields)
- …コレクション名,
ドキュメントのID (_idフィールド), 変更されたドキュメント (JavaScriptオブジェクト) を引数に取り, ドキュメントが変更されたことをクライアントに通知します。 removed(collectionName, id)
- …コレクション名,
ドキュメントのID (_idフィールド) を引数に取り, ドキュメントが削除されたことをクライアントに通知します。
また,publish
内のthis
オブジェクトは,
userId
- …ログインユーザのID。ログインされていなければnull。
ready()
- …クライアントに対し,
初期データの送信が終わったことを伝える。 Meteor.
のコールバックが呼び出される。subscribe() onStop(func)
- …パブリッシュが停止した際に呼び出されるイベントハンドラを登録する。
error(error)
- …クライアントにエラーを通知する。クライアントからのサブスクライブは停止し,
Meteor.
のコールバックが呼び出される。subscribe() stop()
- …パブリッシュを停止する。
また,func
は引数を取ることもできます。func
に引数として渡される値は,Meteor.
で渡したものになります。よくある例としては,