编程语言
首页 > 编程语言> > DynamoDB PHP getItem()-如何判断项目是否不存在

DynamoDB PHP getItem()-如何判断项目是否不存在

作者:互联网

我正在编写尝试获取项目的“获取或创建”方法,但是如果该项目不存在,它将创建该项目的全新版本.显然,我想肯定地知道当我尝试获取该项目时该项目不存在,因此它永远不会覆盖现有数据.

我是否正确假设$result [“ Item”] ===为null当且仅当在请求时该项目在数据库中不存在时?就是说,如果该项目在请求之前存在,则无论API错误等如何,此条件是否总是评估为false?还是还有其他我应该检查的东西?

    $result = $this->client->getItem(
        array(
            "TableName" => $tableName,
            "Key" => array(
                $keyName => array(Type::STRING => $key),
            )
        )
    );

    if ( $result["Item"] === null )
    {
        //Item does not exist; create it and write it to dynamoDb (code not shown)
    }

    return $result["Item"];

解决方法:

我会添加’ConsistentRead’=>为true,以确保您的读数获得了绝对的,最新的数据.

您仍然会遇到潜在的争用情况,如果多个进程尝试获取该项目,然后发现它们都不存在,那么他们都会尝试写入该项目,但是只有一个进程不会破坏其数据.只要他们没有机会写不同的数据,那就没关系.

标签:amazon-dynamodb,php
来源: https://codeday.me/bug/20191122/2063237.html