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 只给了我“两个”。我注意到 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 回答