我正在編寫一個試圖獲取項目的「獲取或創建」方法,但如果它不存在,它將創建一個全新的新版本它。很顯然,我想知道確實該項目在我試圖獲取時不存在,因此它不會覆蓋現有數據。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"];
是的,這會工作,但我真的不喜歡時的開銷廣闊大部分請求(超過99%)不會創建數據。 – Fragsworth
@Fragsworth嗯......你也可以同時使用兩種技術(get和check,然後是有條件的put),這樣你可以節省開銷,但是在競賽條件下理論上是安全的。 –