DynamoDB条件放置

说我想添加如下记录:

\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项目调用吗?

cs_chenzz 回答:DynamoDB条件放置

使用条件表达式创建新项目或更新现有项目。最好使用updateItem而不是putItem

如果哈希键(主键)不存在,则putItemupdateItem都将创建新记录。如果记录已经存在,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);  
   })
本文链接:https://www.f2er.com/3145373.html

大家都在问