发布
社区首页 >问答首页 >无法解析请求对象

无法解析请求对象
EN

Stack Overflow用户
提问于 2022-01-08 13:28:20
回答 1查看 258关注 0票数 1

来自,我的邮递员,我把下面的内容作为原始的JSON传递

代码语言:javascript
代码运行次数:0
复制
{
    "profile": {
      "emailAddress": "john@gmail.com",
      "givenName": "John",
      "firstName": "John",
      "lastName": "Thomas",
      "profileePic": null
    }
}

但是,我的JavaScript代码正在中断,因为我无法解析配置文件对象中的emailAddress、givenName等属性。当我在我的AWS CloudWatch上看到它时,我得到了跟踪错误

代码语言:javascript
代码运行次数:0
复制
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运行时编写的)代码,在这里我试图解析事件

代码语言:javascript
代码运行次数:0
复制
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());

我试着调试了很多,但是还没有发现任何具体的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-08 13:36:58

事件中的body是字符串,而不是对象,您必须首先使用JSON.parse()函数解析它,然后从返回的对象中提取profile

代码语言:javascript
代码运行次数:0
复制
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)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70632764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档