如何解决NodeJs 没有将两个过滤器属性附加到 url 参数
我正在尝试执行 get 请求并将几个 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,expand: 'lineItems',limit: 1000
},qsStringifyOptions: { indices: false }
};
此外,request
已弃用。因此,您很可能想找到一种处理 fetch
的方法。为此存在多个包,例如 node-fetch
、whatwg-fetch
、isomorphic-fetch
。
再次提醒,如果是 request
库,您需要使用回调或将其视为流。如果它是 request-promise
,那会给你一个承诺,但你确实需要 await
它才能得到响应。该 async
函数没有返回值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。