2013-07-10 37 views
3
阵列

有请求:/test?strategy[]=12&strategy[]=23Node.js的:在查询

在PHP我们可以接收阵列与此代码:

$_GET['strategy'] 

这将是数组,即使其具有1个PARAM。


在JS,我们可以使用以下代码:

var query = url.parse(request.url, true).query; 
var strategy = query['strategy[]'] || []; 

但是,如果将有1个PARAM strategy/test?strategy[]=12),它不会是一个数组。
我认为这是一个肮脏的解决方案,以检查元素的数量和转换strategy[strategy ]如果它等于1。

我怎样才能从查询中Node.js的一个数组?

回答

3

节点本身并不解析这些类型的数组 - 也不是用PHP调用“关联数组”或JSON对象(解析a[key]=val{ a: { key: 'val' } })。

对于这样的问题,您应该使用软件包qs解决:

var qs = require("qs"); 
qs.parse('user[name][first]=Tobi&user[email][email protected]'); 
// gives you { user: { name: { first: 'Tobi' }, email: '[email protected]' } } 

qs.parse("user[]=admin&user[]=chuckNorris"); 
qs.parse("user=admin&user=chuckNorris"); 
// both give you { user: [ 'admin', 'chuckNorris' ] } 

// The inverse way is also possible: 
qs.stringify({ user: { name: 'Tobi', email: '[email protected]' }}) 
// gives you user[name]=Tobi&user[email]=tobi%40learnboost.com