【发布时间】:2020-07-09 02:47:11
【问题描述】:
我正在尝试更新我的 dynamodb 表中的现有记录。 如下所示,我的表中有一个项目
let params = {
TableName: proces.env.dynamoDbTable,
Item: {
productId: "id",
att1: val1,
att2: val2
}
}
我想执行更新。我正在使用 aws dynamodb sdk 的更新方法并传递如下参数
let aws = require('aws-sdk');
let dbb = new aws.DynamoDb.DocumentClient();
let params = {
TableName: process.env.tableName,
Key: {productID}
ExpressionAttributeNames: { "#updatedAt" : "updatedAt" }
ExpressionAttributeValues: {":u":moment().unix(), ":val1" : a, ":val2": b}
UpdateExpression: "SET att1 = :val1, att2: val2, #updatedAt: :u"
}
// a, b are passed as argument to function and are optional
dbb.update(params).promise()
当一个参数丢失时,发电机会引发 ExpressionAttributeValue 丢失异常,我知道它是直接的。有没有办法可以使用提供的属性更新我的项目
【问题讨论】:
-
“当参数丢失时”是什么意思?
-
另外,
An expression attribute name must begin with a pound sign (#),docs.aws.amazon.com/amazondynamodb/latest/developerguide/… -
@LucasD 这是我的更新表达式的样子 "SET #name =:n, #slug = :s, #updatedAt = :u,description= :d, thumbnail= :t" 我收到一个req 从前端更新一个名为“描述”的参数。当我调用更新方法时,它会抛出一个代码“ValidationException”缺少属性值:n。我明白,由于我没有传递值,所以预计会出现错误。我怎样才能只更新我收到的几个属性,而其余的保持不变?
-
请用正确的格式更新您的问题。希望其他人能提出更优雅的解决方案
-
@LucasD 当然我会重新格式化问题。感谢您的回答。我会在这里尝试并更新。 :)
标签: node.js amazon-web-services amazon-dynamodb dynamodb-queries amazon-dynamodb-local