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-fetch
、whatwg-fetch
、isomorphic-fetch
.
再次提醒,如果它是 request
库,您需要使用回调或将其视为流。如果它是 request-promise
,那会给你一个承诺,但你确实需要 await
它才能得到响应。 async
函数没有 return 值。
我正在尝试执行获取请求并将几个 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-fetch
、whatwg-fetch
、isomorphic-fetch
.
再次提醒,如果它是 request
库,您需要使用回调或将其视为流。如果它是 request-promise
,那会给你一个承诺,但你确实需要 await
它才能得到响应。 async
函数没有 return 值。