代码之家  ›  专栏  ›  技术社区  ›  Reid

AWS DynamoDB create update expression-如果不存在,则添加新的stringset

  •  0
  • Reid  · 技术社区  · 6 年前

    我正在尝试创建一个更新,如果字符串集存在,则将电子邮件添加到字符串集;如果不存在,则使用电子邮件创建一个字符串集。

    我从这个答案中提取了一些代码: Append to or create StringSet if it doesn't exist 但我似乎不能让它工作。

    我最后犯了个错误 "errorMessage": "An error occurred (ValidationException) when calling the UpdateItem operation: Invalid UpdateExpression: Incorrect operand type for operator or function; operator: ADD, operand type: MAP" }

     response = table.update_item(
            Key={'email':email},
            UpdateExpression='ADD emails :i',
            ExpressionAttributeValues={
                ':i': {SS': [email]},
            },
            ReturnValues="UPDATED_NEW"
        )
    

    如果不存在stringset,如何生成创建stringset的更新表达式;如果不存在,如何向其中添加项?

    0 回复  |  直到 6 年前
        1
  •  3
  •   Andrew Allison    5 年前

    这周我也遇到了同样的问题,我为以后再讨论这个问题的人找到了解决办法。请看下面的示例:

    response = table.update_item(
        Key={'email': email },
        UpdateExpression="ADD emails :i",
        ExpressionAttributeValues={":i": set([email])},
        ReturnValues="UPDATED_NEW"
    )
    

    这对我创建字符串集或附加到现有的字符串集起到了作用。