DynamoDB-提供的关键元素与架构不匹配

时间:2018-07-13 20:38:46

标签: amazon-web-services aws-lambda amazon-dynamodb dynamodb-queries

我有一个带有属性的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搜索。有人可以帮我解释一下如何正确设置此设置吗?

0 个答案:

没有答案