2012-03-08 45 views
2

我用Cradle的Node.js调用CouchDB更新处理程序。我需要在查询字符串中传递数组,但是当我读取CouchDB中的req.query对象时,只有第一个数组值是可用的。因此,例如使用摇篮.update方法:传递数组在查询字符串Node.js

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

但是,当我检查传递给CouchDB中的QS值是:

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

然后在CouchDB的更新功能,req.query.tags只给我两”。我注意到,摇篮使用要求(“查询字符串”)做了“querystring.stringify”,所以我也试过visionmedia的要求(“QS”),但是“qs.stringify”给我:

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

会似乎CouchDB希望标签数组通过:

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

我该如何建立一个看起来像这样的查询字符串?

+0

你是说这是craddle中的错误?如果是这样,你应该打开一个问题。 – fent 2012-03-08 04:35:37

回答

6

您可以使用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

你会看到:{ “标签”: “标签1”, “标签2”, “标签3”]}