说我想添加如下记录:
\v^.*.wpd\_.{-}\_^\s*\_$
我要检查的是记录是否存在{
id:876876,username:example,email:xxxxxx@xxx.com,phone:xxxxxxx,created_at:current_date,updated_at:current_date
}
,而仅created_date
应该具有updated_date
。
我们可以使用put方法执行此操作而不必进行get项目调用吗?
使用条件表达式创建新项目或更新现有项目。最好使用updateItem而不是putItem。
如果哈希键(主键)不存在,则putItem
和updateItem
都将创建新记录。如果记录已经存在,putItem
将完全覆盖现有行,但是updateItem
仅更新在 UpdateExpression 中传递的属性,而不是整个记录。
根据您的情况,使用if_not_exists()
函数检查created_at
字段是否已经存在。如果存在,created_at
将不会被覆盖。
更新表达式: "SET #email = :email,#created_at = if_not_exists(#created_at,:created_at),#updated_at = :updated_at"
示例代码段
var params = {
ExpressionAttributeNames: {
"#email": "email","#created_at": "created_at","#updated_at": "updated_at"
},ExpressionAttributeValues: {
":email": {
S: "test2@grr.la"
},":created_at": {
S: date.toISOString()
},":updated_at": {
S: date.toISOString()
}
},Key: {
"id": {
S: "T1"
}
},ReturnValues: "ALL_NEW",TableName: "stack",UpdateExpression: "SET #email = :email,#updated_at = :updated_at"
};
ddb.updateItem(params,function(err,data) {
if (err) console.log(err,err.stack); // an error occurred
else console.log(data);
})