AngularJSのコントローラの書き方として3つあるようだ。サンプルで出てくるのは、コントローラをグローバル関数として定義するパターンだ。
これは、サンプルとしてわかりやすいためこうしているようだが、規模が大きくなると破綻するパターンのよう。
モジュールにコントローラを追加するパターンがお勧めパターン。
AngularJSのDIの仕組み、minify対策は覚えておこうにどのようなパターンで、どうしておすすめかがまとめてあるので参考にする。
また、今回のアプリケーションは、Flexのように、すべてのHTML(MXML)をクライアントに読み込んで、必要な部分だけを表示することにする。
サーバーとのやりとりはRESTfulにデータはJSONPで、行う。JSONPのセキュリティ上の視点では、JSONPはセキュアではないのか?にかかれているので参照する。
また、[気になる]JSONPの守り方という@ITの記事を参考にする。
次にCloud9にMongoDBをインストールする方法が、Cloud9のマニュアルのMongoDB使用方法に記述してある。
Running MongoDB on a Cloud9 workspaceを参照する。
ただ、これだと多分mongodを実行した時にハードディスクのほとんどの容量をMongoDBように予め確保されてしまうため、--nopreallocもオプションに加える。
ついで、Mongooseをインストールする。
$ npm install mongooseこれはちょっと時間がかかるのでしばらく待っておく。 インストールが終了すると、ターミナルで、mongodbコンソールを起動する。officeデータベースを使用する。
mongo $IP/officeNode.js + ExpressでJSONPをレスポンスするときには、サーバーサイドで、
app.enable("jsonp callback"); app.get("/hoge/api", function(req, res){ res.json({"code":"1000", "name":"fuga"}); }としてから、/hoge/api?callback=fnのように呼び出すと、fn({"code":"1000", "name":"fuga"});と返ってくるみたいなことがネットに書いてあったので、そのまま実装すると、{"code":"1000", "name":"fuga"}と返ってきている。 受け側はJSONPと想定して受け取っているため、エラーとなる。 Expressの公式サイトを見てみると、responseのメソッドとして、jsonpというのがあった。 やっぱり公式サイトを見るべきだ。