Tag Archives: node

nodejs express-sessionのセッションクッキーでajax request時の情報が保持されない

expressのsessionでmaxAge=nullでセッションクッキー用(ブラウザを閉じたら消える)を利用して、情報の保持をしていたら何故かajaxリクエストによりセットしたsession上のデータが他のリクエストに引き継がれないので少しハマりました。以下、簡単なメモ。

Continue reading nodejs express-sessionのセッションクッキーでajax request時の情報が保持されない

Node.jsでEvernoteのリマインダー通知機能を実装する

趣味で作っているLunchTimerというアプリを公開してそろそろ1ヶ月くらい経つと思いますが、このアプリは今のところろそこそこ好評で自分のチームでは毎日みんなで投票したりしてランチを決めています。社内でも少しずつ口コミで広まってきてる感もあります。

さて、実際に運用し始めてみると、急遽必要とされている機能が見えてきました。

それは、うっかり投票のし忘れをなんとかならないかw という点です。

業務に集中してると、気づいたら投票の時間過ぎてたなんてことがしばしばあります。
そんな時は、携帯に通知できたら良いなということでEvernoteのリマインダーの機能を使って実装することにしました。

Continue reading Node.jsでEvernoteのリマインダー通知機能を実装する

ec2上にデプロイしたnodejsプロジェクトの更新スクリプト

ec2上にnodeのプロジェクトをホストとしていて、gitのソースを更新して、JSのcompression等を行うgruntのtaskを流して、foreverでサーバーのバックグラウンド再起動を行うというステップが少々面倒だったので、シェルスクリプトを作りました。

Continue reading ec2上にデプロイしたnodejsプロジェクトの更新スクリプト

node expressサーバーの起動をgruntから行う

node+express環境ではnode appでサーバー起動をする方法はdeprecatedで最近はnpm startコマンドが推奨されているみたいです。

npm startを発行するとpackage.jsonの中のscriptsに記載されたコマンドが発行され、通常express環境なら/bin/wwwというスクリプトが叩かれます。

package.json

  "scripts": {
    "start": "node ./bin/www"
  },

wwwもjavascriptファイルで、中ではapp.jsを特定のポートに対してlistenしているだけです。

ただ、もしサーバーの起動をgruntに任せたい場合はどうしましょう。

Continue reading node expressサーバーの起動をgruntから行う

node.js embedの簡易版DB NeDBを使ってみる

node+expressで簡単なアプリ開発をしていて、シンプルなデータベースを使えたらなぁと思い調べてみたらNeDBというプロジェクトをgithub上で発見しました。

やはりクイックに開発するためにMySQLやMongoDBのインストールから始めたくないですよね。。NeDBというのはまだ日本語のドキュメントも存在しなくあまり知られていないですが、そこそこ活発に開発されているようなのでどんなものかと使ってみました。

以下はnode+expressの初期セットアップ環境+underscore templatesを想定しています。詳しくは前回の記事を参照してください。

NeDBのAPIはMongoDBとそろえているみたいです。MongoDBでいうcollectionがNeDBでいうDataSourceにあたります。
dbのファイルをdata/groups.dbとし、メインのapp.jsで以下のような記述を冒頭に足します。注意点はapp.use(‘/’, routes);の行より上に記述することです。(そうしないとrouter内にreq.dbが渡らない)。例がgroupなのはgroupの登録を想定したアプリを作ろうとしているからです。

app.js

var Datastore = require('nedb');
// create data collection
var db = {};
db.groups = new Datastore({filename: 'data/groups.db', autoload: true});
// Make our db accessible to our router
app.use(function(req,res,next){
    req.db = db;
    next();
});

Continue reading node.js embedの簡易版DB NeDBを使ってみる