【发布时间】:2020-10-14 01:15:17
【问题描述】:
我正在尝试使用 Axios 进行 GET 请求。 API 的响应包括几个正确填充的对象。但是,一个特定的对象/字段是一个始终显示为空数组的数组。
这是我得到的响应(注意带有空数组的“用户”对象):
{
url: 'https:/<removed>/customers/<removed>/users?number=41442268000',
users: [],
customer: {
url: 'https://<removed>/customers/<removed>',
id: '<removed>',
name: 'CX Customer1'
},
paging: { offset: 0, limit: 2000, count: 0 }
}
奇怪的是,当我使用 Postman 查询完全相同的资源时,它工作得非常好:
{
"url": "https://<removed>/customers/<removed>/users?number=8013334001",
"users": [
{
"url": "https://<removed>/customers/<removed>/users/<removed>",
"id": "b1703d6a<removed>",
"bwId": "<removed>.webex.com",
"lastName": "One",
"firstName": "Gus1",
"displayName": "Gus1 One",
"type": "USER",
"callerIdLastName": "One",
"callerIdFirstName": "Gus1",
"callerIdNumber": "+1-8013334001",
"numbers": [
{
"external": "+1-8013334001",
"extension": "4001",
"primary": true
}
],
"location": {
"name": "Salt Lake City",
"id": "9a03e3e<removed>",
"url": "https://<removed>/customers/<removed>/locations/<removed>"
}
}
],
"customer": {
"url": "https://<removed>/customers/<removed>",
"id": "4c1ccbe<removed>",
"name": "CX Customer1"
},
"paging": {
"offset": 0,
"limit": 2000,
"count": 1
}
}
正如上面 Postman 响应中所观察到的,“users”数组内部有一个对象。
这是我的 Node.js 代码:
function getUsersByTN(customerInfo, userData) {
let rowNumber = 1;
let successCount = 0;
let failureCount = 0;
axios.defaults.headers.common["Authorization"] = `Bearer ${customerInfo.token}`;
console.log('Attempting to find users on Webex Calling using their phone number...');
return new Promise(async (resolve, reject) => {
try {
for (let data of userData) {
rowNumber++;
const phoneNumber = data.TN;
const getUserURL = `https://<removed>/customers/` +
`${customerInfo.customerId}/` +
`users?number=` +
`${phoneNumber}`;
const result = await axios.get(getUserURL);
console.log(result.data);
resolve(result);
}
}
catch (err) {
reject(new Error(err));
}
})
}
我也尝试过用更传统的 Promise 使用方式替换 async/await 格式,但得到了相同的结果:
axios.get(getUserURL)
.then(result => console.log(result.data))
.catch(err => console.log(err));
我错过了什么?
谢谢!
-格斯
【问题讨论】:
-
试试
console.log(result.data.users)和console.log(result.data.users.length)。 -
尝试将内容类型添加为 json 并在 postman 中生成代码 sn-ps 并进行比较。
-
console.log(result.data.users)显示[ ]。执行console.log(result.data.users.length)显示0。谢谢。 -
据我所知,Postman 的代码与我的非常相似。它使用
console.log(JSON.stringify(response.data))来显示数据,我也已经尝试过了。