Dynamodb UpdateExpression将新的地图对象添加到现有Item的列表中

时间:2018-12-11 09:17:46

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

我当前在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",

1 个答案:

答案 0 :(得分:0)

好的,我已经弄清楚了如何将一个对象添加到项目的现有map属性中。我使用了 list_append

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

#creating the lists
wind_list <- as.list(as.character(winddir$Wind))
date_list <- as.list(as.character(winddir$Date))
相关问题