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

时间:2017-02-18 09:26:10

标签: javascript node.js rest loopbackjs strongloop

我想问一下你是否知道如何在环回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的值,因为我只得到最后一个参数的信息。

知道怎么解决吗?

谢谢你。

1 个答案:

答案 0 :(得分:2)

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

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

请注意,options密钥为passedrequest,此处为useQuerystring的文档:

  
      
  • useQuerystring - 如果为true,请使用querystring字符串化并解析查询字符串,否则请使用qs(默认值:false)。设置此选项   如果需要将数组序列化为true,请foo=bar&foo=baz   而不是默认的foo[0]=bar&foo[1]=baz
  •   

因此,如果你删除它,你会以?q[0]=PHOTOS&q[1]=DETAILS

之类的结尾

您还可以选择其他选项:

  
      
  • qsStringifyOptions - 包含传递给qs.stringify方法的选项的对象。   或者将选项传递给   querystring.stringify   使用此格式{sep:';', eq:':', options:{}}的方法。例如,   使用qs更改数组转换为查询字符串的方式   模块传递arrayFormat选项中的一个   indices|brackets|repeat
  •   

所以你实际上最终会添加相同的东西:

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

如果你想只有括号(类似于?q[]=PHOTOS&q[]=DETAILS),你可以指定brackets选项:

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