Lambda(Node.js)からDynamoDBのテーブルを検索する

求人
Lambda(Node.js)からDynamoDBのテーブルを検索する

Lambda(Node.js)からDynamoDBのテーブルを検索するには3通りメソッドがあります。

Lambda(Node.js)からDynamoDBのテーブルを検索する

getとqueryとscanです。getは1件、queryは複数件返ってくることを想定するため、渡す引数が異なります。

また、getしても0件だった場合、空のオブジェクト({})が返ります。

queryして0件だった場合、空の配列([])が返ります。

この違いがあるので、0件チェックするロジックが異なります。

queryの場合

getの場合

以下、getの場合のパラメータです。

TableName テーブル名
Key パーティションキーとソートキーのオブジェクト型

以下、記述例です。

結果は以下の通りになります。戻り値が1件ですが、オブジェクトで囲まれているのがわかります。

上記構成になるため、data.Itemで初めて取得したいオブジェクトが取得できます。

getは0件の場合は空オブジェクトが返りますが、その際にdata.Itemとするとundefinedになりますので注意が必要です。

次にqueryのパラメータについてです。

TableName テーブル名
IndexName インデックス名(任意)
ExpressionAttributeNames プレースホルダ指定 例){‘#a’: ‘year’}
ExpressionAttributeValues プレースホルダ指定 例){‘:value’: ‘1’}
KeyConditionExpression 検索条件 例)#id = :value

以下、例です。

結果は以下のようになります。

queryの場合は、data.Itemsで配列にオブジェクトが入った値が取得できます。データが2件の場合はオブジェクトも2つ入った配列となります。

queryの結果が0件の場合はdata.Itemsの戻り値は[]になります。

データをソートする

getは1件なのでソートできませんが、scan,queryはデータをソートキーでソートすることができます。

falseにすると降順になります。

以下は降順でソートする例です。

結果は以下のように降順で取得できていることがわかります。

Limitでデータ件数を指定する

と指定することでqueryやscanで件数を指定することができます。Limit:0とするとエラーとなります。

以下、昇順にソートし、1件のみ取得する例です。

結果は以下のように1件取得できます。

scanする

次は全件検索するscanをしてみます。テーブル名のみ指定します。

関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
Python3.6,Djangoを勉強中です,Javaは少し飽きてしまってます–;
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくば、我に七難八苦を与えたまえ」です^^

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA