【发布时间】:2022-01-20 22:56:24
【问题描述】:
我希望通过 Postman 将 JSON 发送到 API Gateway API 端点,但在发送 Map 和 SS 属性时遇到了困难。
我为"Created" 选择了Map,并选择"Last Modified" 来显示日期和时间。
我为列表项选择了SS,例如"Ages": ["Grade 8","Grade 9","Grade 10"].
请有人帮忙查看 Lambda 函数和 JSON,以了解如何发送数据?我对 AWS 很陌生。
这将是人们通过前端发布工作的表单。
Lambda 函数
"use strict";
require("dotenv").config();
const AWS = require("aws-sdk");
AWS.config.update({ region: "eu-west-1" });
const documentClient = new AWS.DynamoDB.DocumentClient();
const addJobListing = async (data) => {
const body = {
Item: {
PK: data["Item"]["PK"],
SK: data["Item"]["SK"],
"Days Off": data["Item"]["Days Off"],
"Start Date": data["Item"]["Start Date"],
"Job ID": data["Item"]["Job ID"],
"Contract Length": data["Item"]["Contract Length"],
"Expiration Date": data["Item"]["Expiration Date"],
Created: {
date: data["Item"]["Created Date"],
time: data["Item"]["Created Time"],
},
Insurance: data["Item"]["Insurance"],
Title: data["Item"]["Title"],
Holidays: data["Item"]["Holidays"],
Ages: data["Item"]["Ages"], //NEEDS TO BE MAPPED
"Flight Reimbursement": data["Item"]["Flight Reimbursement"],
Curriculum: data["Item"]["Curriculum"], //NEEDS TO BE MAPPED
"Account ID": data["Item"]["Account ID"],
"Minimum Monthly Salary Before Tax":
data["Item"]["Minimum Monthly Salary Before Tax"],
"Housing Allowance": data["Item"]["Housing Allowance"],
Responsibilities: data["Item"]["Responsibilities"],
"Job Closest Metro": data["Item"]["Job Closest Metro"],
"Job Requirements": data["Item"]["Job Requirements"],
"Job Type": data["Item"]["Job Type"],
"Z-VISA Reimbursement": data["Item"]["Z-VISA Reimbursement"],
Meals: data["Item"]["Meals"],
Subject: data["Item"]["Subject"],
"Salary Information": data["Item"]["Salary Information"],
"Maximum Monthly Salary Before Tax":
data["Item"]["Maximum Monthly Salary Before Tax"],
"Vacancy Status": data["Item"]["Vacancy Status"],
"Contract Completion Bonus": data["Item"]["Contract Completion Bonus"],
"Last Modified": {
date: data["Item"]["Modified Date"],
time: data["Item"]["Modified Time"],
},
},
TableName: "XXXX",
};
return await documentClient
.put(body)
.promise()
.then((data) => console.log(data.Attributes))
.catch(console.error);
};
exports.handler = async (event, context, callback) => {
console.log("EVENT BODY", event.body);
const response = await addJobListing(JSON.parse(event.body));
return {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin": "*", // Required for CORS support to work
"Access-Control-Allow-Credentials": true, // Required for cookies, authorization headers with HTTPS
},
body: JSON.stringify(response),
};
};
通过 Postman 进行 JSON 测试:
{
"Item": {
"PK": "ACC#1000",
"SK": "JOBID#01.17/01/2022",
"Days Off": "Weekends",
"Start Date": "17/09/2022",
"Job ID": "01",
"Contract Length": "Two Years",
"Expiration Date": "17/09/2022",
"Created": {
"date": "17/09/2022",
"time": "00:00:00"
},
"Insurance": "Insurance",
"Title": "Title Of Vacancy",
"Holidays": "Amount of Holidays",
"Ages": ["Grade 8","Grade 9","Grade 10"],
"Flight Reimbursement": "Flight Reimbursement",
"Curriculum": ["Schools Own Curriculum","International Baccalaureate","GCSE"],
"Account ID": "10",
"Minimum Monthly Salary Before Tax": "Minimum Monthly Salary Before Tax",
"Housing Allowance":"Housing Allowance",
"Responsibilities": "Responsibilities",
"Job Closest Metro": "Job Closest Metro",
"Job Requirements": "Job Requirements",
"Job Type": "Job Type",
"Z-VISA Reimbursement": "Z-VISA Reimbursement",
"Meals": "Meals",
"Subject": "Subject",
"Salary Information": "Salary Information",
"Maximum Monthly Salary Before Tax": "Maximum Monthly Salary Before Tax",
"Vacancy Status": "Vacancy Status",
"Contract Completion Bonus": "Contract Completion Bonus",
"Last Modified": {
"date": "17/09/2022",
"time": "00:00:00"
}
}
}
【问题讨论】:
-
您能否在问题中添加任何错误消息?一般来说,为了能够回答一个问题,最好把它写成“当我尝试 X 时,我期望 Y,但我看到的是 Z”
标签: amazon-web-services aws-lambda amazon-dynamodb aws-api-gateway dynamodb-queries