【问题标题】:Dynamodb UpdateExpression adding new map object to a list of existing ItemDynamodb UpdateExpression 将新地图对象添加到现有项目列表中
【发布时间】:2018-12-11 17:38:54
【问题描述】:

我的 dynamodb 表中目前有一个 List 属性:

 name: "Test User"
 recommendations: []

我想使用 UpdateExpression添加新项目到推荐属性

const params = {
    TableName: 'insiders',
    Key:{
      "uuid": event.uuid, // WHERE uuid is event.uuid
    },
    UpdateExpression: "SET #recommendations = :recommendation",
    ExpressionAttributeNames: {
      "#recommendations": "recommendations",
    },
    ExpressionAttributeValues: {
      ":recommendation": [{ 
        "uuid":  `ir_${uuidv4()}`, 
        "recommendation": event.recommendation
      }]
    },
    ReturnValues:"UPDATE_NEW"
  };

  dynamodb.update(params, function(err, data) { }

我设法将对象映射添加到推荐列表,但是当我想添加另一个对象映射时,它会替换推荐列表中的对象。

我也试过在UpdateExpression中使用ADD

const params = {
    TableName: 'insiders',
    Key:{
      "uuid": event.uuid,
    },
    UpdateExpression: "ADD #recommendations :recommendation",
    ExpressionAttributeNames: {
      "#recommendations": "recommendations",
    },
    ExpressionAttributeValues: {
      ":recommendation": [{ 
        "uuid":  `ir_${uuidv4()}`, 
        "recommendation": event.recommendation, 
      }]
    },
    ReturnValues:"ALL_NEW"
  };

   dynamodb.update(params, function(err, data) { }

但是我遇到了错误

"Invalid UpdateExpression: Incorrect operand type for operator or function; operator: ADD, operand type: LIST",

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda amazon-dynamodb


    【解决方案1】:

    好的,我已经知道如何将对象添加到项目的现有地图属性中。我使用了 list_append

    这会将一个对象添加到现有的地图属性中

    const params = {
        TableName: 'insiders',
        Key:{
          "uuid": event.uuid,
        },
        UpdateExpression: "SET #attrName = list_append(#attrName, :attrValue)",
        ExpressionAttributeNames: {
          "#attrName": "recommendations",
        },
        ExpressionAttributeValues: {
          ":attrValue": [{ 
            "uuid":  `ir_${uuidv4()}`, 
            "recommendation": event.recommendation
          }]
        },
        ReturnValues:"ALL_NEW"
      };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2014-03-05
      相关资源
      最近更新 更多