Node.js 使用NODEjs更新DynamoDB:语法错误;令牌:\";更新\";,近处:\";设置已更新=\"&引用;

Node.js 使用NODEjs更新DynamoDB:语法错误;令牌:\";更新\";,近处:\";设置已更新=\"&引用;,node.js,amazon-dynamodb,Node.js,Amazon Dynamodb,dynamoDB上的每个项目如下所示 { "status": "pending", "ccNumber": "0012", "created": "2018-03-07T16:42:02-04:00", "id": "14664d28-ef41-4228-99b5-6381a2a69f62", "amount": "12", "invoice": "71200", "customerId": "00000" } 我正在尝试更新此特定记录上的一个字段,并添加更

dynamoDB上的每个项目如下所示

 {
  "status": "pending",
  "ccNumber":  "0012",
  "created":  "2018-03-07T16:42:02-04:00",
  "id": "14664d28-ef41-4228-99b5-6381a2a69f62",
  "amount":  "12",
  "invoice": "71200",
  "customerId": "00000"
}
我正在尝试更新此特定记录上的一个字段,并添加更多项。这是我的params变量

 const params = {
  TableName: this.table,
  Key: { id },
  UpdateExpression: `set tranStatus = :status, updated = :updated, authTransacId = :authTransacId, avsResponse = :avsResponse, authCode = :authCode`,
  ExpressionAttributeValues: {
    ':status': data.status,
    ':updated': moment().utcOffset(-4).format(),
    ':authTransacId': data.transId,
    ':avsResponse': data.avsResponse,
    ':authCode': data.authCode
  },
  ReturnValues: "UPDATED_NEW"
}
我似乎找不到新字段的问题:更新了您能
控制台.log(params)

我怀疑
updated
是一个保留字。在参数中使用
ExpressionAttributeNames
是一种安全的做法

我希望你能调用
.update(params)
,不是吗

const params = {
  TableName: this.table,
  Key: { id },
  UpdateExpression: `set #a = :status, #b = :updated, #c = :authTransacId, #d = :avsResponse, #e = :authCode`,
  ExpressionAttributeValues: {
    ':status': data.status,
    ':updated': moment().utcOffset(-4).format(),
    ':authTransacId': data.transId,
    ':avsResponse': data.avsResponse,
    ':authCode': data.authCode
  },
  ExpressionAttributeNames: {
    '#a': 'tranStatus',
    '#b': 'updated',
    '#c': 'authTransacId',
    '#d': 'avsResponse',
    '#e': 'authCode',
  },
  ReturnValues: "UPDATED_NEW"
}

是的!我确实调用了
update(params)
。谢谢这起作用了。第一次使用dynamoDB。将记住ExpressionAttributeNames的建议。