环回中 REST 连接器查询中的重复键

Duplicate keys in a REST connector query in loopback

我想问问您是否知道如何在环回 REST 连接器查询中复制参数。 我有以下代码:

details: {
    'template': {
      'method': 'GET',
      'debug': true,
      'url': 'https://www.example.com/data',
      'timeout': 10000,
      'headers': {
        'Authorization': 'Bearer {token}'
      },
      'query': {
        q: 'PHOTOS'
        q: 'DETAILS',
        id: '{id}'
      },
      'options': {
        'useQuerystring': true
      },
      'responsePath': '$'
    },
    'functions': {
      'searchData': [
        'token',
        'id'
      ]
    }
  }

问题在于环回似乎用最后一个参数覆盖了参数 q 的值,因为我只获得了最后一个参数的信息。

知道如何解决吗?

提前谢谢。

您只需将它们作为数组传递即可:

  'query': {
    q: ['PHOTOS', 'DETAILS'],
    id: '{id}'
  },

请注意,options 键是 passed to request,这里是 useQuerystring 的文档:

  • useQuerystring - If true, use querystring to stringify and parse querystrings, otherwise use qs (default: false). Set this option to true if you need arrays to be serialized as foo=bar&foo=baz instead of the default foo[0]=bar&foo[1]=baz.

因此,如果您删除它,您将以 ?q[0]=PHOTOS&q[1]=DETAILS.

之类的内容结尾

您还可以选择其他选项:

  • qsStringifyOptions - object containing options to pass to the qs.stringify method. Alternatively pass options to the querystring.stringify method using this format {sep:';', eq:':', options:{}}. For example, to change the way arrays are converted to query strings using the qs module pass the arrayFormat option with one of indices|brackets|repeat

所以你实际上可以得到同样的东西加上这个:

  "options": {
    "qsStringifyOptions": {
      "arrayFormat": "repeat"
    }
  }

如果你只想有括号(像这样 ?q[]=PHOTOS&q[]=DETAILS)你可以指定 brackets 选项:

  "options": {
    "qsStringifyOptions": {
      "arrayFormat": "brackets"
    }
  }