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に登録ください。

📚 おすすめの書籍