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

时间:2014-06-23 17:56:27

标签: javascript node.js superagent

我正在尝试对正在构建url的php服务器发出请求:

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

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

我试过这个:

req.get(' website.com&#39)的查询({Q:'帮助',Q:' moreHelp',Q:' evenMoreHelp'})端(...)

但我不确定它实际上是在发送所有三个' q'值。我应该做些什么来确保他们都被送去?

3 个答案:

答案 0 :(得分:5)

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

$ node
> {q:'help',q:'moreHelp',q:'evenMoreHelp'}
{ q: 'evenMoreHelp' }

Superagent允许查询字符串,如本例straight from the docs

request
  .get('/querystring')
  .query('search=Manny&range=1..5')
  .end(function(res){

  });

所以如果你传递字符串'q=help&q=moreHelp&q=evenMoreHelp',你应该没问题。类似的东西:

req.get('website.com').query('q=help&q=moreHelp&q=evenMoreHelp').end(...)

如果这太难看了,你可以尝试(警告:我没试过这个):

req.get('website.com')
 .query({ q: 'help' })
 .query({ q: 'moreHelp' })
 .query({ q: 'evenMoreHelp' })
 .end(...);

答案 1 :(得分:0)

Superagent 1.5.0开始,您可以将数组作为查询对象的属性传递,它将生成多个相同名称的查询参数:

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

结果为website.com?foo=bar1&foo=bar2

作为旁注,如果您需要Rails parameter[]=value语法,那么以下内容适用于我:

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

答案 2 :(得分:-1)

我可以确认将参数作为数组传递到查询中可以很好地工作,就像这样:

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