我正在尝试将对网络测验的答案保存到DynamoDB表中。每次提交答案时,最终将调用下面的代码。例如。 3个答案将被调用3次。
添加了每个时间答案,使用当前时间戳更新了字段Em$lwage = plm::lag(Em$wage)
。这使我知道何时提交了最后答案。但是,我也想知道何时提交第一个答案,因此我也需要UpdatedAt
字段。我不知道如何实施?
(我正在检查CreatedAt
,但它似乎适用于整个更新操作。而我仅在首次插入该项目时才需要找到一种更新ConditionalCheckExpression
的方法)。
CreatedAt
答案 0 :(得分:1)
在AWS docs中查看。
SET-向一个项目添加一个或多个属性和值。如果这些属性中的任何一个已经存在,则将它们替换为新值。您也可以使用SET从Number类型的属性中添加或减去。例如:SET myNum = myNum +:val
SET支持以下功能:
if_not_exists(路径,操作数)-如果该项在指定路径上不包含属性,则if_not_exists求值为操作数;否则,它将评估路径。您可以使用此功能来避免覆盖该项目中可能已经存在的属性。
list_append(操作数,操作数)-评估为列表,其中添加了新元素。您可以通过反转操作数的顺序将新元素添加到列表的开头或结尾。
// use if_not_exists()
UpdateExpression: `SET #QQ_ID = :answer, #updatedAt = :updatedAt, #createdAt = if_not_exists(#createdAt, :createdAt)`,
ExpressionAttributeNames: {
'#QQ_ID' : `QQ_${question_id}`,
'#updatedAt': 'UpdatedAt',
'#createdAt': 'CreatedAt',
},
ExpressionAttributeValues: {
':answer': answer,
':updatedAt' : now.toISOString(),
':createdAt' : now.toISOString(),
}