yumulog

北海道の大学教員/情報科学研究者の日記

node.jsでHTTP POSTのbodyをスキーマレスにMongoDBに格納

f:id:yumu19:20141104194048j:plain

最近、node.jsを使い始めました。ちょっとしたwebサーバが簡単に書けていいですね。node.jsでMongoDBを扱うには mongoose をつかうとすごく楽です。しかし、mongooseを使う際にはスキーマを定義しなければいけません。HTTP POSTのbody(JSON形式)のように何が飛んでくるか分からない場合にもスキーマレスにとりあえず突っ込んでおきたいというときには、Schema.Types.Mixed という型を指定してスキーマを作成すれば、何でも格納でき、JSONデータもそのまま格納できます。

環境

  • OS: OS X 10.9.4
  • node.js: v0.10.32
  • mongoose: v3.8.18
  • MongoDB: v2.6.4

下準備:mongooseがなければ、npmでインストールできます。

$ npm install mongoose

ソース

node.js file which saves body of HTTP POST to Mong ...

ただし、これだと "data" というキーの値としてJSONデータが格納されるため、階層が1段深くなってしまいます。それが嫌だという方は、mongo driverを使う方法もあるようです。