将不存在的元素添加到 DynamoDB 中的数组

2024-02-17

我正在尝试更新项目属性,即字符串列表。 仅当属性不存在时我才可以更新(追加)该属性吗? 类似于 list_append 和 if_not_exists。

var 参数 = { ...

UpdateExpression: 

'设置朋友 = list_append(if_not_exists(朋友, :empty_list), :new_friend)',

ExpressionAttributeValues:{
    ":new_friend": [{"S":"Bobo"}],
    ":empty_list" :[]
 } };

这不行,有办法吗? 所以如果 Bobo 仍然不在我的“朋友”列表中,它会追加它


您可以使用“不包含” and “列表追加”为了您的要求。

如果好友尚未出现在列表中,以下代码会将新好友插入到列表中。

如果好友已经存在于列表中,则会抛出“条件请求失败”。

如果条件失败,则会出现错误消息:-

Unable to update item. Error JSON: {
  "message": "The conditional request failed",
  "code": "ConditionalCheckFailedException",
  "time": "2016-06-22T08:18:36.483Z",
  "requestId": "86805965-240b-43e0-8fdc-77fb9ae1b15c",
  "statusCode": 400,
  "retryable": false,
  "retryDelay": 0
}

下面的代码工作正常。已经测试成功。

代码示例:

var AWS = require("aws-sdk");

AWS.config.update({
    region : "us-west-2",
    endpoint : "http://localhost:8000"
});

var docClient = new AWS.DynamoDB.DocumentClient();

var table = "users";

var userid = 1;
var friendId = ["f4"];
var friendIdStr = "f4";


//Add the new DOCUMENT TYPE attribute to the table
var params = {
    TableName : table,
    Key: {
        "id" : userid 
    },
    "UpdateExpression": "set friends = list_append (friends, :friendId)",
    "ConditionExpression": "not contains (friends, :friendIdStr)",
    "ExpressionAttributeValues": { 
        ":friendId": friendId,
        ":friendIdStr" : friendIdStr
    },
    "ReturnValues" : "UPDATED_NEW"
};

console.log("Updated an item...");
docClient.update(params, function(err, data) {
    if (err) {
        console.error("Unable to update item. Error JSON:", JSON.stringify(err,
                null, 2));
    } else {
        console.log("Updated item:", JSON.stringify(data, null, 2));
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将不存在的元素添加到 DynamoDB 中的数组 的相关文章

随机推荐

  • Try and Catch on TSQL - catch 不捕获

    我有一个存储过程似乎没有正确记录其错误 代码出错 但 catch 块似乎没有生效 try 块相当长 但错误部分很简单并且就在最后 所以我已经精确说明了这一点 BEGIN TRY insert into tbl X select from t
  • 为什么我在此文件夹上收到 UnauthorizedAccessException?

    据 MSDN 报道 目录 存在 https msdn microsoft com en us library system io directory exists v vs 110 aspx如果目录不可访问 则应返回 false 我有一条路
  • 使用 jQuery 无法找到动态添加的 HTML 元素

    我正在 HTML 中实现一个树浏览器 单击节点时 我调用一个添加该节点的子元素的函数 到目前为止 一切都很好 我现在想立即调用其中一个子元素的单击处理程序来展开它 我的问题是 jQuery 找不到刚刚添加的子元素 当我在调试器中单步调试时
  • x/y 坐标的排序向量

    我有一个向量 u32 u32 表示 10 x 10 网格上坐标的元组 坐标未排序 因为标准sort函数也没有产生我想要的结果 我为他们编写了一个这样的排序函数 vec sort by a b if a 0 gt b 0 return Ord
  • 使用 SQL 批量更新记录

    我在 SQL Server 2008 环境中有两个表 其结构如下 Table1 ID DescriptionID Description Table2 ID Description Table1 DescriptionID 映射到Table
  • 在依赖注入中检查 null 的更好方法

    通过构造函数使用依赖项注入时 我始终需要在将实例传递给内部属性之前检查是否为空 例如 public UserManager User user IStateManager stateManager if user null throw ne
  • 使用谷歌直方图创建日期直方图

    如何创建适用于日期的 Google 直方图 1 我已经放置了示例代码 带有工作号码和非工作日期示例 http jsfiddle net Qquse 417 http jsfiddle net Qquse 417 和下面的代码 2 1 htt
  • 为什么 Spring 允许在私有方法上进行控制器注释的请求映射?

    今天刚刚在 Spring MVC 控制器类中遇到了这个 RequestMapping value foo method RequestMethod GET private String doThing final WebRequest re
  • 为什么表单提交会打开新窗口/选项卡?

    我发现了很多问题 如何在新窗口中打开表单结果 https stackoverflow com search q spring 20form 20new 20window 但我面临着相反的问题 我有表格
  • 使用 twitter bootstrap 3 将 9 列布局居中

    我的代码就像 div class container fluid div class row div class col md 3 div div class col md 3 div div class col md 3 div div
  • 使用 Google Analytics 管理 API 和应用脚本提取 GA4 媒体资源列表

    想知道是否有人有使用新的 Analytics Admin API 将 GA 帐户和属性列表导出到电子表格的经验 我过去曾使用管理 API 来实现此目的 但这限制了我们只能使用 UA 属性 我希望也能在此处包含 GA4 属性 我尝试过将旧脚本
  • simplemembership MVC4 通过 userId 获取用户名

    使用 MVC4 和 SIMPLEMEMBERSHIP 的人知道如何通过 userId 获取用户名 用户未登录 我想删除它 要删除我必须使用 Membership DeleteUser string username 你可以使用GetUser
  • 连接来自不同服务器的表

    有什么建议如何在存储过程中连接来自不同服务器的表吗 如果没有更多细节 很难给出直接的例子 但基本思想如下 首先 在存储过程之外 主机服务器 存储过程所在的服务器 必须了解第二台服务器 包括 可能 登录信息 在您的主服务器上 运行sp add
  • TestCafe——断言元素可见的正确方法

    根据各种论坛讨论 TestCafe 文档以及尝试比较结果 我仍然不确定哪种是断言页面元素可见的正确 或最佳 方法 await t expect Selector elementId visible ok vs await t expect
  • 使用 Javascript 在 Span 标记内动态插入链接

    我有这个 span class image img src something jpg span 我想使用 javascript 将其转换为 span class image a href domain img src something
  • 如何为我的石头剪刀布游戏编写一套更简洁的代码?

    下面是我在 Web 开发课程中必须进行的石头剪刀布游戏活动的 JS 文件 我能够让一切正常工作 但是我不喜欢 if else 语句使我的代码花费了多长时间 并且想知道如何使其更加简洁并以更少的代码行数实现 const imagePath i
  • 将 div 容器调整为视频大小(也可全屏)

    我正在尝试获取覆盖视频的文本 并根据其大小调整进行相应的操作 目前我的麻烦是使视频容器的大小与播放器相同 以及全屏模式 我的容器是相对定位的 我的视频和文本叠加 div 是绝对定位的 HTML div div
  • 使用 SoX 将 mp3 文件分割为 TIME 秒

    我需要将 mp3 文件分割成片TIME每秒 我试过了mp3splt 但如果输出是 它对我不起作用不到1分钟 是否可以这样做 sox file in mp3 file out mp3 trim START LENGTH 当我不知道mp3文件时
  • 使用 spring 集成 aws 轮询 S3 存储桶中的文件并进行处理

    我需要轮询 S3 存储桶中的文件 并在任何文件可用时立即拾取并处理它们 我需要使用 Spring Integration 和 spring integration aws 来完成此操作 所以到目前为止我的代码看起来像这样 public Am
  • 将不存在的元素添加到 DynamoDB 中的数组

    我正在尝试更新项目属性 即字符串列表 仅当属性不存在时我才可以更新 追加 该属性吗 类似于 list append 和 if not exists var 参数 UpdateExpression 设置朋友 list append if no