无法在DynamoDB中更新

时间:2019-02-21 21:41:09

标签: javascript amazon-dynamodb

我正在尝试使用以下代码更新数据库:

const patchParams = {
  TableName: 'users',
  Key: {
      email,
  },
  UpdateExpression: `set oauth_tokens.oauth_token1 = :a`,
  ExpressionAttributeValues: {
    ':a': accessToken,
  },
  ReturnValues: "UPDATED_NEW"
};

dynamoDb.update(patchParams, (putError, result) => {
  console.log(putError, result);

但是它一直抛出此错误: The document path provided in the update expression is invalid for update', code: 'ValidationException'

我认为这可能是因为尚未填充email字段。有没有办法放置新条目并进行更新?

1 个答案:

答案 0 :(得分:0)

我认为这里有两个错误。

第一个是您的密钥。 AWS文档中的所有代码示例(例如this page)都可以让您使用

Key: {
    'email': email,
}, 

第二个问题是,如果此项是新的(数据库中尚未存在),则不能使用oauth_tokens.oauth_token1作为文档路径。 oauth_tokens尚不存在,因此尝试直接引用其子级之一是无效的。

相反,您应该使用

UpdateExpression: 'set oauth_tokens = :a',
ExpressionAttributeValues: {
    ':a': { 'oauth_token1': accessToken },
},