【问题标题】:Amazon DynamoDB putItem returning nullAmazon DynamoDB putItem 返回 null
【发布时间】:2017-05-16 09:21:06
【问题描述】:

我正在使用 AmazonDynamoDBClient putItem 方法在数据库中插入项目。 putItem 的返回类型是 PutItemResult 但我将其设为 null。

AmazonDynamoDBClient client = new AmazonDynamoDBClient();
PutItemRequest r = new PutItemRequest();
r.addItemEntry("custId",new Attribute Value("101"));
PutItemResult result = client.putItem(r);
//result is null

项目已成功插入数据库,但为什么结果为空?

【问题讨论】:

    标签: amazon-dynamodb aws-java-sdk


    【解决方案1】:

    请根据您的要求指定 RETURN_VALUE。默认值为 NONE

    ReturnValues - (字符串)如果您想获取项目,请使用 ReturnValues 在使用 PutItem 更新之前出现的属性 要求。对于 PutItem,有效值为:

    NONE - 如果没有指定 ReturnValues,或者如果它的值为 NONE,则 什么都没有返回。 (此设置是 ReturnValues 的默认设置。) ALL_OLD - 如果 PutItem 覆盖了属性名称-值对,则 旧项目的内容被退回。注意:ReturnValues 参数 被多个 DynamoDB 操作使用;但是,PutItem 没有 识别除 NONE 或 ALL_OLD 以外的任何值。

    来自 API 文档:-

    public PutItemRequest(String tableName,
                          Map<String,AttributeValue> item,
                          String returnValues)
    

    Set return values

    ReturnValues 参数由多个 DynamoDB 操作使用; 但是,PutItem 不识别除 NONE 或 ALL_OLD。

    ALL_NEW、UPDATED_NEW 和 UPDATED_OLD 用于 UpdateItem 操作。

    UPDATED_OLD - 仅返回更新后的属性,因为它们出现 在 UpdateItem 操作之前。

    ALL_NEW - 返回项目的所有属性,就像它们出现时一样 在 UpdateItem 操作之后。

    UPDATED_NEW - 仅返回更新后的属性 在 UpdateItem 操作之后。

    【讨论】:

    • PutItem 不识别除 NONE 或 ALL_OLD 以外的任何值,那么为什么存在 ALL_NEW 和其他 ReturnValues?如果我第一次插入一个项目并想要返回相同的项目怎么办?
    • 更新了其他返回值的答案。它们专门用于更新项目。
    • 知道了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    相关资源
    最近更新 更多