7

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

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

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

我试过这个:

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

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

4

3 回答 3

8

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

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

Superagent 允许查询字符串,如本例中直接来自文档的

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(...);
于 2014-06-23T18:03:40.767 回答
1

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

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

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

作为旁注,如果您想要 Railsparameter[]=value语法,那么以下内容对我有用:

req.get('website.com').query({'foo[]': ['bar1', 'bar2']})
于 2016-12-29T08:32:51.543 回答
-2

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

query: {
      productId,
      orderStatuses: ['FOO', 'BAR', 'OTHER'],
    },
于 2020-04-08T02:09:29.820 回答