jsonengine みたいな実装を

Node.js 使って書きはじめたら勢いがついてしまい帰宅後も云々な方向。以下にいくつかメモというか控えを。

req.query なオブジェクトについて

例えば右記な URI /?cond=age.ge.20&sort=age.asc&limit=10 だと req.query は以下。

> req.query
{ cond: 'age.ge.20', sort: 'age.asc', limit: 10 }

これが右記な URI だと /?cond=age.ge.20&cond=age.lt.60&sort=age.asc&limit=10 だと req.query が以下になる模様。

> req.query
{ cond: [ 'age.ge.20', 'age.lt.60' ], sort: 'age.asc', limit: 10 }

配列になったりそうでなかったり。あるいはそうでない場合文字配列になっているので非常にタチが悪い。ので、instanceof は評判悪そうですが、以下な方法を使う予定。

val = (val instanceof Array) ? val : [val];

req.param なオブジェクトについて

ええと例えば以下な定義で

app.get('/:docType/:id', function(req, res){

右記のような URI /hoge/abc567 だとすると req.param は以下なのか。

> req.param('docType')
'hoge'
> req.param('id')
abc567

res.send メソド

http ステイタスを数値表現で渡せるらしい。こちらも素晴しい。以下なカンジかと。

    obj = { docType: req.param('docType'), id: req.param('id') };
    res.send(JSON.stringify(obj), 404);

あ、あと res.sendfile とか res.download なんてゆー手続きを見つけてて wktk してたりしてます。

mongoose の find の第一引数

以下なサンプルを見つけてます。

RegProvider.prototype.findAll = function(callback) {
  Post.find({}, function(err, posts) {
          callback(null, posts)
      });
};

例えば何か id 以外の属性で検索したい場合は第一引数に

{ name: 'hogehoge' }

みたいな javascript のオブジェクトを渡してあげれば良いらしい。ちなみに findById は Schema なナニに実装されているようです。