You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DynamoDB实现嵌套对象不存在则创建、存在则追加键值对的方法

解决方案

现有代码只完成了Tasks嵌套对象的初始化逻辑,没有补充向Tasks对象写入指定id键值对的操作。DynamoDB的UPDATE操作支持在同一个SET语句内顺序执行多个赋值动作,且if_not_exists初始化后可以直接对嵌套路径赋值,不会出现路径不存在的报错。

修改后的代码如下:

const data = await docClient
    .update({
      TableName: DYNAMO_TABLE,
      Key: {
        TaskQueueSid: event.TaskQueueSid,
      },
      UpdateExpression:
        "SET TaskQueueName = :TaskQueueName, Tasks = if_not_exists(Tasks, :empty_object), Tasks[:id] = :Tasks",
      ExpressionAttributeValues: {
        ":TaskQueueName": event.TaskQueueName,
        ":Tasks": {
          TaskSid: event.TaskSid,
          TaskAssignmentStatus: event.TaskAssignmentStatus
        },
        ":id" : id,
        ":empty_object": {},
      },
    })
    .promise();

逻辑说明

  • 同一SET语句内的操作会按逻辑顺序执行,首先判断Tasks是否存在,不存在则初始化为空对象,存在则保留原有数据
  • 后续直接对Tasks[:id]赋值,此时Tasks必然为有效嵌套对象,因此不管是原有Tasks还是刚初始化的空对象,都会正确写入id对应的键值对
  • 整个更新操作为原子性,不需要提前读取数据做判断,不会产生并发更新冲突

内容的提问来源于stack exchange,提问作者Chandrahas Balleda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:15:03