NodeJs 没有将两个过滤器属性附加到 url 参数

NodeJs not attatching both filter properties to url params

我正在尝试执行获取请求并将几个 url 参数传递到请求中,但出于某种原因,该请求似乎只添加了两个 url 参数之一同名。

我的代码是:

  async function getOrderByDate(data) {
   const options = {
    method: 'get',
    url: config.cloverApiUrl +'/v3/merchants/'+data.merchant_id
      +'/orders',
    headers: {
      Authorization: 'Bearer ' + data.token,
      ContentType: 'application/json'
    },
    qs: {
      filter: `clientCreatedTime>` +data.minDate,
      filter: `clientCreatedTime<` +data.maxDate,
      expand: 'lineItems',
      limit: 1000
    }
  };
  console.log('here ' +JSON.stringify(options.qs));
  const response = request(options);
}

问题是当我在收到请求之前记录查询参数时:

 here {"filter":"clientCreatedTime<1613624400000","expand":"lineItems","limit":1000}

我不知道为什么它只添加了所有 url 参数,包括一个 clientCreatedTime 过滤器而不是另一个。在此先感谢您的帮助。

你必须使用数组:

      filter: [`clientCreatedTime>` +data.minDate, `clientCreatedTime<` +data.maxDate],

并且您必须将 qsStringifyOptions 设置为 { indices: false }:

   const options = {
    method: 'get',
    url: config.cloverApiUrl +'/v3/merchants/'+data.merchant_id
      +'/orders',
    headers: {
      Authorization: 'Bearer ' + data.token,
      ContentType: 'application/json'
    },
    qs: {
      filter: [`clientCreatedTime>` +data.minDate, `clientCreatedTime<` +data.maxDate],
      expand: 'lineItems',
      limit: 1000
    },
    qsStringifyOptions: { indices: false }
  };

此外,request 已弃用。所以你最有可能想找到一种方法来处理 fetch 。为此存在几个软件包,例如 node-fetchwhatwg-fetchisomorphic-fetch.

再次提醒,如果它是 request 库,您需要使用回调或将其视为流。如果它是 request-promise,那会给你一个承诺,但你确实需要 await 它才能得到响应。 async 函数没有 return 值。