免費工具

DynamoDB 保留字檢查器

貼上你的屬性名稱以查看哪些與 DynamoDB 的保留字衝突,並複製一個安全地為它們加上別名的 ExpressionAttributeNames 對應表。

屬性名稱

每行輸入一個屬性名稱(逗號與空格也可以)。每一個都會不分大小寫,對照完整的 DynamoDB 保留字清單進行檢查。

6 個名稱中有 4 個是保留字,必須加上別名。
  • name#name保留字
  • status#status保留字
  • timestamp#timestamp保留字
  • userId可用
  • count#count保留字
  • email可用
ExpressionAttributeNames
{
  "#name": "name",
  "#status": "status",
  "#timestamp": "timestamp",
  "#count": "count"
}

在你的運算式中以每個保留字名稱的 # 別名來引用它,並將這個對應表作為 ExpressionAttributeNames 傳入。

為何保留字很重要

DynamoDB 維護著一長串保留關鍵字,它不會接受把這些字當作運算式中裸露的屬性名稱。日常用的名稱 — name、status、size、count、timestamp、year — 都在清單上。直接引用其中之一,請求就會以 ValidationException 失敗,而且通常是在執行時而非在程式碼審查時。

解決方法是運算式屬性名稱:一個代替真實名稱的 # 佔位符,搭配一個 ExpressionAttributeNames 對應表。這個檢查器會不分大小寫地將你的名稱與完整清單比對,並自動為保留字建立該對應表,讓你可以直接把它貼進 GetItem、Query、Update 或 Delete 請求中。

加別名是個能避開一整類錯誤的小習慣 — 運算式屬性名稱與值 深入說明這些佔位符,而 Expression Builder 會在你建構時為你為每個名稱加上別名。

常見問題

什麼是 DynamoDB 保留字?

DynamoDB 保留了一大串關鍵字 — 大約 573 個 — 這些字無法在運算式中直接當作屬性名稱使用。像 name、status、timestamp、size 與 count 這類名稱全都是保留字。如果你在投影、filter、條件或更新運算式中直接引用其中之一,DynamoDB 會回傳一個 ValidationException,並帶有「Attribute name is a reserved keyword」的訊息。

我要如何把保留字當作屬性名稱使用?

用運算式屬性名稱為它加上別名 — 一個以 # 開頭並對應到真實名稱的佔位符。例如,在你的運算式中引用 #name,並傳入 ExpressionAttributeNames 為 { "#name": "name" }。本工具會為你輸入的每個保留字名稱產生該對應表,隨時可貼進你的請求中。

保留字清單區分大小寫嗎?

不區分。DynamoDB 的保留字清單不區分大小寫,因此 Name、name 與 NAME 都會被視為保留字 NAME。這個檢查器會不分大小寫地比對,與 DynamoDB 完全一致。

我必須為每個屬性名稱都加上別名嗎?

只有保留字需要別名,但許多團隊習慣為每個名稱都加上別名,這樣就永遠不會遇到這個錯誤,而且運算式讀起來也一致。為非保留字加上別名一律是安全的。本工具會明確標示出你的哪些名稱是保留字,讓你自行決定。

不必透過主控台就能操作 DynamoDB

DynoTable 是一款快速的 DynamoDB 桌面用戶端 — 瀏覽表格、執行 SQL 風格的查詢,並在本機編輯項目。