Может кто-нибудь объяснить, как использовать тип GetItemInput при вызове DocumentClient.get, если я передаю объект любого типа, get works, но если я пытаюсь и строго набираю объект params, я получаю ошибку
ValidationException: предоставленный ключевой элемент не соответствует схеме
Вот мой код лямбда-функции, где я передаю параметры в виде any ...
export const get: Handler = async (event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> => {
console.log(event.pathParameters)
if (!event.pathParameters) {
throw Error("no path params")
}
const params: any = {
Key: {
id: event.pathParameters.id
},
TableName: table
}
console.log(params)
try {
const result: any = await dynamoDb.get(params).promise()
return {
body: JSON.stringify(result.Item),
statusCode: result.$response.httpResponse.statusCode
}
} catch (error) {
console.log(error)
return {
body: JSON.stringify({
message: `Failed to get project with id: ${event.pathParameters!.id}`
}),
statusCode: 500
}
}
}
и вот моя попытка заставить его работать с типом GetItemInput
export const get: Handler = async (event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> => {
console.log(event.pathParameters)
if (!event.pathParameters) {
throw Error("no path params")
}
const params: GetItemInput = {
Key: {
"id": { S: event.pathParameters.id }
},
TableName: table
}
console.log(params)
try {
const result: any = await dynamoDb.get(params).promise()
return {
body: JSON.stringify(result.Item),
statusCode: result.$response.httpResponse.statusCode
}
} catch (error) {
console.log(error)
return {
body: JSON.stringify({
message: `Failed to get project with id: ${event.pathParameters!.id}`
}),
statusCode: 500
}
}
}
Если я оставлю Ключ, как прежде, аля ...
const params: GetItemInput = {
Key: {
id: event.pathParameters.id
},
TableName: table
}
Неудивительно, что я получаю ошибку типа. Но я не могу понять, как я могу сформировать свой Ключ так, чтобы я не использовал ValidationException. Не поле id имеет тип String в DynamoDb