Meteor.js promiseでサーバ処理呼び出して結果を非同期で表示する


Meteorでサーバ処理を呼び出しつつ、
処理の結果を非同期でrenderしたくって、パッケージ『deanius/meteor-promise
を導入したのでそのメモです。


🚜 やりたかったこと

- クライアントのタイムゾーンの日付 => サーバに送付して todo 完了に変更
- todo が完了したら、完了していない todo の件数をサーバで計算
- todo の件数をサーバで計算し終わったら、 ビュー側を更新

🎂 Meteor Package promiseの導入

パッケージを導入。(ejsonもいるっぽいです)

meteor add deanius:promise
meteor add ejson

次にclient側のjsに次の処理を追加。

Template.todosItem.helpers({
checked: ReactivePromise(function (todo) {
return Meteor.callPromise("todoChecked", {todoId: todo._id, checkedAt: getDate()});
}, false)
});

Meteor.call("todoChecked") って書くところを Meteor.callPromise("todoChecked") と書いて、
結果が来たらレンダーしてくれる。

🐞 ライブラリの詳しい使い方

公式の Meteor Async w/ deanius:promise はデモもあって分かりやすかったです!

🍮 所感

- Package「deanius:promise」自体は使いやすいし、感激
- JavaScript/Meteor.js 弱者過ぎて、本当に正しい書き方とは思えない。誰かおしえてください><
- Promiseってもう少し別の概念な気がする。ユースケース間違ってる気がしてならない。
- いちいちサーバサイド呼び出しまくってるけど本当にいいのだろうか...、ユーザーちゃんと来たらさばけなくない?

つまりもうちょっとちゃんと勉強しろってことかな。まずは1回JavaScriptちゃんと勉強してみようと思います。

🏀 Healthack.meちょっとずつ改善中

自分の健康管理のチェックリストアプリケーションですが、『healthack.me』を改善中です。
機能の要望とか、コードのまずい部分の修正とかあれば、『morizyun/healthack - GitHub
のISSUEに登録ください。

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍