【问题标题】:Duplicate keys in a REST connector query in loopback环回中 REST 连接器查询中的重复键
【发布时间】:2017-02-20 03:37:45
【问题描述】:

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

知道怎么解决吗?

提前谢谢你。

【问题讨论】:

    标签: javascript node.js rest loopbackjs strongloop


    【解决方案1】:

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

      '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"
        }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 1970-01-01
      • 2017-12-02
      • 2023-03-19
      • 2014-09-09
      • 2019-02-25
      • 2013-07-10
      相关资源
      最近更新 更多