Javascript 如何使用使用相同查询参数的superagent发送请求

Javascript 如何使用使用相同查询参数的superagent发送请求,javascript,node.js,superagent,Javascript,Node.js,Superagent,我试图对一个php服务器发出请求,该服务器正在构建url,如下所示: website.com/?q=help&q=moreHelp&q=evenMoreHelp 如何使用superagent传递具有多个值的同一查询 我试过这个: req.get('website.com') .query({ q: 'help' }) .query({ q: 'moreHelp' }) .query({ q: 'evenMoreHelp' }) .end(...); req.get('website.c

我试图对一个php服务器发出请求,该服务器正在构建url,如下所示:

website.com/?q=help&q=moreHelp&q=evenMoreHelp

如何使用superagent传递具有多个值的同一查询

我试过这个:

req.get('website.com')
 .query({ q: 'help' })
 .query({ q: 'moreHelp' })
 .query({ q: 'evenMoreHelp' })
 .end(...);
req.get('website.com').query({q:'help',q:'moreHelp',q:'evenMoreHelp'})。结束(…)


但我不确定它是否真的发送了所有三个“q”值。我应该怎么做才能确保它们都被发送?

当您以尝试的方式传递查询时,您肯定不会看到所有三个
q
值,因为您正在那里创建一个JavaScript对象,是的,只有一个
q
值:

$ node
> {q:'help',q:'moreHelp',q:'evenMoreHelp'}
{ q: 'evenMoreHelp' }
Superagent允许查询字符串,如本例所示:

因此,如果您传递字符串“q=help&q=moreHelp&q=evenMoreHelp”,您应该会没事。比如:

req.get('website.com').query('q=help&q=moreHelp&q=evenMoreHelp').end(...)
如果这太难看,您可以尝试(警告:我没有尝试过):

截至,您可以将数组作为查询对象的属性传递,它将生成多个同名的查询参数:

req.get('website.com').query({foo: ['bar1', 'bar2']})
结果出现在
website.com?foo=bar1&foo=bar2

作为旁注,如果您想要Rails
parameter[]=value
syntax,那么以下内容对我很有用:

req.get('website.com').query({'foo[]': ['bar1', 'bar2']})

我可以确认,将参数作为数组传递到查询中非常有效,如下所示:

query: {
      productId,
      orderStatuses: ['FOO', 'BAR', 'OTHER'],
    },

使用查询字符串似乎解决了我的问题。现在,我只需要说服php服务器给我一个合适的api,这样我就不需要多次传递同一个密钥。api获取同一个密钥的多个实例是合适的,也是常见的做法。使用原生js对象并不容易。当我使用
.query({foo:[]})
语法时,只有一个元素会将其作为字符串传递。我不得不使用
.query({'foo[]':})
语法强制它作为数组传递。
query: {
      productId,
      orderStatuses: ['FOO', 'BAR', 'OTHER'],
    },