2

CradleでNode.jsを使用して、CouchDB更新ハンドラーを呼び出しています。クエリ文字列で配列を渡す必要がありますが、CouchDBでreq.queryオブジェクトを読み取ると、最初の配列値しか使用できません。したがって、たとえばCradle.updateメソッドを使用すると次のようになります。

db.update("myview/myupdate", id, {title:'sometitle',tags:['one','two']}, function }...

しかし、CouchDBに渡されたQS値を確認すると、次のようになります。

?title=sometitle&tags=one&tags=two

次に、CouchDB更新関数で、req.query.tagsは「2つ」しか与えません。Cradleがrequire( "querystring")を使用して "querystring.stringify"を実行していることに気付いたので、visionmediaのrequire( "qs")も試しましたが、"qs.stringify"は次のようになります。

?title=sometitle&tags[]=one&tags[]=two

CouchDBは、タグ配列を次のように渡すことを望んでいるようです。

?title=sometitle&tags=["one","two"]

そのようなクエリ文字列を作成するにはどうすればよいですか?

4

1 に答える 1

7

Connectと彼のクエリ ミドルウェアを使用できます。

npm install connect
var connect = require('connect');

var server = connect();
server.use(connect.query());
server.use(function (req, res, next) {
    res.end(JSON.stringify(req.query));
});
server.listen(3001);

ブラウザでhttp://127.0.0.1:3001/?tags=tag1&tags=tag2&tags=tag3にアクセスします

{"tags":["tag1","tag2","tag3"]} が表示されます。

于 2012-03-08T10:23:31.973 に答える