如果该值存在,则增加该值,否则在DynamoDB中添加一个新条目

里沙卜·古普塔(Rishab Gupta)

我有一个带有列和主键的DynamoDB表,如下所示ipAddress

  • IP地址
  • 造访

我正在从我的React网站获取用户的IP地址,并通过Lambda函数和API Gateway POST请求将其插入DynamoDB。

如果DynamoDB中已经存在来自React网站的IP地址,则增加visits列中的值如果不是,则使用新的IP地址和创建一个新记录visits = 1我尝试使用ConditionExpression,但无济于事。

到目前为止,我仅使用Lambda插入ipAddress。以下是我在NodeJS中的Lambda函数:

const AWS = require("aws-sdk");
const documentClient = new AWS.DynamoDB.DocumentClient();

exports.handler = async event => {
  const { ipAddress} = JSON.parse(event.body);
  const params = {
    TableName: "ipAddress",
    Item: {
      ipAddress: ipAddress,
    }
  };

  try {
    const data = await documentClient.put(params).promise();
    const response = {
      statusCode: 200,
    };
    return response;
  }
  catch (e) {
    return {
      statusCode: 500,
      body: JSON.stringify(e)
    };
  }

};
Balu vyamajala

我们需要使用update-item而不是put-item,如果record不存在,则两者都会创建一条记录。但是update-item接受UpdateExpression来帮助我们更新现有属性。

UpdateExpression: "SET visits = if_not_exists(visits, :initial) + :num"

if_not_existsinitial当属性visits不存在时,有助于首次使用

docClient.update(
  {
    TableName: "ipAddress",
    Key: {
      ipAddress: ipAddress,
    },
    UpdateExpression: "SET visits = if_not_exists(visits, :initial) + :num",
    ExpressionAttributeValues: {
      ":num": 1,
      ":initial": 0,
    },
  },
  function (error, result) {
    console.log("error", error, "result", result);
  }
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

查找给定值的数据,如果不存在,则查找该值数据系列中的最后一个条目

如果数据库中存在一个值,我该如何更新,否则我要插入它

如果该值尚不存在,请向其复选框中添加一个值

如果提供的选项中存在该值,为什么Angular会添加一个空的<option>?

如果在流类型检查中存在另一个值,则假定存在该值

熊猫:如果预先存在的列包含一些值,则使用“是”创建一个新列;如果该列的值为“”,则创建一个“否”

如果该值存在于另一个表中,则从该表返回另一个值

如果元素不存在,则将元素添加到数组中,如果元素已存在于数组中,则在元素中增加一个值

对于C ++ unordered_map,如何添加一个键-值对(如果它是新的),以及如何将一个函数应用于该值(如果它的键已存在)?

如果另一个数据框中存在一个数据框值,则从该数据框中获取一个值

Excel:检查列A是否具有特定值,如果是,则在该值所在的行中显示另一个单元格

Pandas-创建一个新列,该值在旧列中每次出现值X时都增加

通过增加一个值,另一个值增加该数量

在df中添加一列,如果某个值是0,则返回1,否则返回该列的原始值

JavaScript-如果另一个数组中不存在该数组中的值

添加一个新的数据框列,该列对某些列中的值进行计数,该值小于时间之前的日期

如果表中存在行,则在SQL中使用另一个表值

如果R中的另一个列中未包含该值,则删除该值

我想基于上一列添加一个新的DataFrame列,以便如果上一列元素与列表值匹配,请更改该值

如果存在则更新数组中的元素,否则在MongoDb中的该数组中插入新元素

如何在pySpark数据框中添加一个新列,该列包含计数大于0的列值?

MYSQL - 如果另一个表中不存在该值,则查询以从一个表中获取值

向该数据框添加一个新列,并包含该数据框的每个值的百分比

添加一个新列,该列根据现有字段值自动递增

如果另一列中的某个值是离群值,如何在R中创建一个新的列,该列为1?

将一个列条目的值复制到同一记录的另一个列,如果该值为null

如何在列表中的每个元组中添加一个新条目,该列表是 erlang 中的元组集合?

如果存在基于另一个列值的行,则熊猫会删除该列值

为所有用户使用一个值更新列的所有值(如果存在该值)