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