我尝试向服务器发出后端请求,并继续返回一个response.data
,这是一个HTML字符串,表示为TypeError: Cannot read property of undefined
我需要传递一个data
对象,看起来像这样:
const data = {
visitorId,
patientId: oldPatientId,
doctorId
}
我需要像这样传递一个json web令牌:
const userJWT = jwt.sign(
{
_id: visitorId,
refreshCount: 0
},
this.localConfig.spyrt.jwtSecret
)
和类似的标题:
const headers = {
'Content-Type': 'application/json',
'Authorization': `Bearer ${userJWT}`
}
我在一个异步方法中这样做:
async jwtTest(visitorId: number, oldPatientId: number, doctorId: number): Promise<void> {
const data = {
visitorId,
patientId: oldPatientId,
doctorId
}
const userJWT = jwt.sign(
{
_id: visitorId,
refreshCount: 0
},
this.localConfig.spyrt.jwtSecret
)
const headers = {
'Content-Type': 'application/json',
'Authorization': `Bearer ${userJWT}`
}
if (this.localConfig.spyrt.active) {
const dto = await axios.post(visitURL, data, {headers}).then((response) => {
console.log(response.data);
}).catch((error) => {
console.log(error);
});
}
}
我担心我的axios代码设置不正确。我得到无法读取属性未定义和500 statusCode
错误。
我已经尽我所能查阅了axios文档。有没有人看到我的设置有什么问题?
我尝试了这个实现:
if (this.localConfig.spyrt.active) {
await axios.post(visitURL, data, {headers}).then(function(response) {
console.log(JSON.stringify(response.data));
}).catch(function(error) {
console.log(error);
})
}
而这一次我得到了完全相同的回应。
我对API最接近的理解是之前工程师的代码,其设置看起来像这样:
try {
let response = await fetch(visitURL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + acct.jwt
},
body: JSON.stringify(visit)
});
if (response.ok) {
let result = await response.json();
callback(result);
} else {
throw new Error('Model: createVisit failed!');
}
} catch (error) {
console.log(error);
}
2条答案
按热度按时间7uhlpewt1#
你可以使用async/await或promise,但不能在同一个调用中同时使用。最快的解决方法是:
wvyml7n52#
TLDR:确保正确访问响应对象
我遇到了这个帖子,我的问题最终是因为我在对象访问中缺少了一个'.data'
我错了(I Had This Wrong)
vs正确的: