来自,我的邮递员,我把下面的内容作为原始的JSON传递
{
"profile": {
"emailAddress": "john@gmail.com",
"givenName": "John",
"firstName": "John",
"lastName": "Thomas",
"profileePic": null
}
}
但是,我的JavaScript代码正在中断,因为我无法解析配置文件对象中的emailAddress、givenName等属性。当我在我的AWS CloudWatch上看到它时,我得到了跟踪错误
2022-01-08T18:52:33.723+05:30 START RequestId: d0e38c52-a7d6-40dd-afac-c06d2ab201d8 Version: $LATEST
2022-01-08T18:52:33.834+05:30 info: event: {"body":"{\n \"profile\": {\n \"emailAddress\": \"john@gmail.com\",\n \"givenName\": \"John\",\n \"firstName\": \"John\",\n \"lastName\": \"Thomas\",\n \"profileePic\": null\n }\n}\n","headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","CloudFront-Forwarded-Proto":"https","CloudFront-Is-Desktop-Viewer":"true","CloudFront-Is-Mobile-Viewer":"false","CloudFront-Is-SmartTV-Viewer":"false","CloudFront-Is-Tablet-Viewer":"false","CloudFront-Viewer-Country":"IN","Content-Type":"application/json","Host":"rukq81brsl.execute-api.ap-southeast-1.amazonaws.com","Postman-Token":"f206f469-e8fc-44c7-ab50-91082c0c7073","User-Agent":"PostmanRuntime/7.28.4","Via":"1.1 a0182542bde1ac9ec73dcf86004da8fc.cloudfront.net (CloudFront)","X-Amz-Cf-Id":"5Q-dEIt0WSWNAbpwXgapJNyt-zbVAyEjTDMVt_OONS4swLH1JJ_g9g==","X-Amzn-Trace-Id":"Root=1-61d99018-6935ebc455a3ca2b69a82bd2","X-Forwarded-For":"223.190.90.66, 64.252.163.138","X-Forwarded-Port":"443","X-Forwarded-Proto":"https"},"httpMethod":"POST","isBase64Encoded":false,"multiValueHeaders":{"Accept":["*/*"],"Accept-Encoding":["gzip, deflate, br"],"CloudFront-Forwarded-Proto":["https"],"CloudFront-Is-Desktop-Viewer":["true"],"CloudFront-Is-Mobile-Viewer":["false"],"CloudFront-Is-SmartTV-Viewer":["false"],"CloudFront-Is-Tablet-Viewer":["false"],"CloudFront-Viewer-Country":["IN"],"Content-Type":["application/json"],"Host":["rukq81brsl.execute-api.ap-southeast-1.amazonaws.com"],"Postman-Token":["f206f469-e8fc-44c7-ab50-91082c0c7073"],"User-Agent":["PostmanRuntime/7.28.4"],"Via":["1.1 a0182542bde1ac9ec73dcf86004da8fc.cloudfront.net (CloudFront)"],"X-Amz-Cf-Id":["5Q-dEIt0WSWNAbpwXgapJNyt-zbVAyEjTDMVt_OONS4swLH1JJ_g9g=="],"X-Amzn-Trace-Id":["Root=1-61d99018-6935ebc455a3ca2b69a82bd2"],"X-Forwarded-For":["223.190.90.66, 64.252.163.138"],"X-Forwarded-Port":["443"],"X-Forwarded-Proto":["https"]},"multiValueQueryStringParameters":null,"path":"/user/validation","pathParameters":null,"queryStringParameters":null,"requestContext":{"accountId":"195725532069","apiId":"rukq81brsl","domainName":"rukq81brsl.execute-api.ap-southeast-1.amazonaws.com","domainPrefix":"rukq81brsl","extendedRequestId":"LoNz7HiuyQ0FlIA=","httpMethod":"POST","identity":{"accessKey":null,"accountId":null,"caller":null,"cognitoAuthenticationProvider":null,"cognitoAuthenticationType":null,"cognitoIdentityId":null,"cognitoIdentityPoolId":null,"principalOrgId":null,"sourceIp":"223.190.90.66","user":null,"userAgent":"PostmanRuntime/7.28.4","userArn":null},"path":"/dev/user/validation","protocol":"HTTP/1.1","requestId":"b95ffa2b-12eb-43fe-8f36-87a071713268","requestTime":"08/Jan/2022:13:22:32 +0000","requestTimeEpoch":1641648152994,"resourceId":"gso8zl","resourcePath":"/user/validation","stage":"dev"},"resource":"/user/validation","service":"user-service","stageVariables":null}
2022-01-08T18:52:33.834+05:30 info: event.body:: {"service":"user-service"}
2022-01-08T18:52:33.834+05:30 info: event.body.profile:: {"service":"user-service"}
2022-01-08T18:52:33.834+05:30 info: profile: {"service":"user-service"}
2022-01-08T18:52:33.835+05:30 2022-01-08T13:22:33.835Z d0e38c52-a7d6-40dd-afac-c06d2ab201d8 ERROR Invoke Error {"errorType":"TypeError","errorMessage":"Cannot read property 'emailAddress' of undefined","stack":["TypeError: Cannot read property 'emailAddress' of undefined"," at Runtime.exports.lambdaHandler [as handler] (/var/task/app.js:31:34)"," at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"]}
2022-01-08T18:52:33.893+05:30 END RequestId: d0e38c52-a7d6-40dd-afac-c06d2ab201d8
更奇怪的是,event.body正在被解析为{"service":"user-service"}
,我在这里期待profile对象。
这是我的Lambda (用JavaScript编写的,使用Node.js运行时编写的)代码,在这里我试图解析事件
exports.lambdaHandler = async (event, context) => {
logger.info('event:', event);
let body, data;
let statusCode = 200;
const headers = {
'Content-Type': 'application/json',
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': '*'
};
logger.info('event.body::', event.body);
logger.info('event.body.profile::', event.body.profile);
const profile = event.body.profile;
logger.info('profile:', profile);
const emailAddress = profile.emailAddress;
const hash = md5(emailAddress.trim().toLowerCase());
我试着调试了很多,但是还没有发现任何具体的东西。
发布于 2022-01-08 13:36:58
事件中的body
是字符串,而不是对象,您必须首先使用JSON.parse()
函数解析它,然后从返回的对象中提取profile
。
const event = {"body":"{\n \"profile\": {\n \"emailAddress\": \"john@gmail.com\",\n \"givenName\": \"John\",\n \"firstName\": \"John\",\n \"lastName\": \"Thomas\",\n \"profileePic\": null\n }\n}\n","headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","CloudFront-Forwarded-Proto":"https","CloudFront-Is-Desktop-Viewer":"true","CloudFront-Is-Mobile-Viewer":"false","CloudFront-Is-SmartTV-Viewer":"false","CloudFront-Is-Tablet-Viewer":"false","CloudFront-Viewer-Country":"IN","Content-Type":"application/json","Host":"rukq81brsl.execute-api.ap-southeast-1.amazonaws.com","Postman-Token":"f206f469-e8fc-44c7-ab50-91082c0c7073","User-Agent":"PostmanRuntime/7.28.4","Via":"1.1 a0182542bde1ac9ec73dcf86004da8fc.cloudfront.net (CloudFront)","X-Amz-Cf-Id":"5Q-dEIt0WSWNAbpwXgapJNyt-zbVAyEjTDMVt_OONS4swLH1JJ_g9g==","X-Amzn-Trace-Id":"Root=1-61d99018-6935ebc455a3ca2b69a82bd2","X-Forwarded-For":"223.190.90.66, 64.252.163.138","X-Forwarded-Port":"443","X-Forwarded-Proto":"https"},"httpMethod":"POST","isBase64Encoded":false,"multiValueHeaders":{"Accept":["*/*"],"Accept-Encoding":["gzip, deflate, br"],"CloudFront-Forwarded-Proto":["https"],"CloudFront-Is-Desktop-Viewer":["true"],"CloudFront-Is-Mobile-Viewer":["false"],"CloudFront-Is-SmartTV-Viewer":["false"],"CloudFront-Is-Tablet-Viewer":["false"],"CloudFront-Viewer-Country":["IN"],"Content-Type":["application/json"],"Host":["rukq81brsl.execute-api.ap-southeast-1.amazonaws.com"],"Postman-Token":["f206f469-e8fc-44c7-ab50-91082c0c7073"],"User-Agent":["PostmanRuntime/7.28.4"],"Via":["1.1 a0182542bde1ac9ec73dcf86004da8fc.cloudfront.net (CloudFront)"],"X-Amz-Cf-Id":["5Q-dEIt0WSWNAbpwXgapJNyt-zbVAyEjTDMVt_OONS4swLH1JJ_g9g=="],"X-Amzn-Trace-Id":["Root=1-61d99018-6935ebc455a3ca2b69a82bd2"],"X-Forwarded-For":["223.190.90.66, 64.252.163.138"],"X-Forwarded-Port":["443"],"X-Forwarded-Proto":["https"]},"multiValueQueryStringParameters":null,"path":"/user/validation","pathParameters":null,"queryStringParameters":null,"requestContext":{"accountId":"195725532069","apiId":"rukq81brsl","domainName":"rukq81brsl.execute-api.ap-southeast-1.amazonaws.com","domainPrefix":"rukq81brsl","extendedRequestId":"LoNz7HiuyQ0FlIA=","httpMethod":"POST","identity":{"accessKey":null,"accountId":null,"caller":null,"cognitoAuthenticationProvider":null,"cognitoAuthenticationType":null,"cognitoIdentityId":null,"cognitoIdentityPoolId":null,"principalOrgId":null,"sourceIp":"223.190.90.66","user":null,"userAgent":"PostmanRuntime/7.28.4","userArn":null},"path":"/dev/user/validation","protocol":"HTTP/1.1","requestId":"b95ffa2b-12eb-43fe-8f36-87a071713268","requestTime":"08/Jan/2022:13:22:32 +0000","requestTimeEpoch":1641648152994,"resourceId":"gso8zl","resourcePath":"/user/validation","stage":"dev"},"resource":"/user/validation","service":"user-service","stageVariables":null}
let {profile} = JSON.parse(event.body) // extract profile from returned Object
console.log(profile.givenName)
https://stackoverflow.com/questions/70632764
复制相似问题