我有一个带有属性的dynamodb表:userId,propertyInfo和propertyId。 userId是主索引。当我使用以下lambda代码更新(放置)表中的项目时,出现“提供的键元素与架构不匹配”。
const AWS = require('aws-sdk'); // eslint-disable-line import/no-extraneous-dependencies
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports.update = (event, context, callback) => {
const timestamp = new Date().getTime();
const data = JSON.parse(event.body);
const params = {
TableName: process.env.DYNAMODB_TABLE,
Key: {
propertyId: event.pathParameters.id,
},
ExpressionAttributeNames: {
'#new_propertyInfo': 'propertyInfo',
},
ExpressionAttributeValues: {
':propertyInfo': data.propertyInfo,
},
UpdateExpression: 'SET #new_propertyInfo = :propertyInfo',
ReturnValues: 'ALL_NEW',
};
dynamoDb.update(params, (error, result) => {
// handle potential errors
if (error) {
console.error(error);
callback(null, {
statusCode: error.statusCode || 501,
headers: { 'Content-Type': 'text/plain' },
body: 'Couldn\'t fetch the item.',
});
return;
}
// create a response
const response = {
statusCode: 200,
body: JSON.stringify(result.Attributes),
};
callback(null, response);
});
};
我的更新请求的正文是:
{
"propertyInfo":
{
"houseNumber": 2000,
"street": "easy st"
}
}
event.pathParameters.id是从/ property / {id}获得的。我需要此ID来搜索数据库的propertyId。需要使用userId进行授权。搜索和更新我需要按propertyId搜索。有人可以帮我解释一下如何正确设置此设置吗?