Node.jsでDynamoDBを操作するためのチートシート[DynamoDB.DocumentClient][AWS]という感じでnodejsで色々するために前からメモを書いていますが、毎回わからなくなるので簡単なquery用のパラメータを生成するモジュールを作ってみました(初公開)
dyqun
若さ故の過ち...とかではない。
git-hub: https://github.com/yukiGitHubAc/dyqun
使い方
npm i dyqun
モノとしてはパラメータを生成すだけなので生成したパラメータをDynamoDB.DocumentClient.queryのパラメータに指定して投げます。
- Hashキーを使った検索
- HashキーとRangeキーを使った検索
- Hashキーのみを指定して対応するRangeキーを全て取得する検索
- Indexを指定した検索
- 上記検索にFilterを組み合わせて検索
を現状カバーしています。
dyqun用パラメータ
項目名 | 必須 | 値 | メソッド |
---|---|---|---|
tableName | 必須 | 検索対象のDynamoDテーブル名 | query/filter |
indexKey | 任意 | インデックスから検索する際のインデックス名 | query/filter |
hashKey | 必須 | 検索対象のテーブルのHashキー情報ブロック | query/filter |
hashKey.key | 必須 | 検索対象のテーブルのHashキーの項目名 | query/filter |
hashKey.val | 必須 | 検索対象のテーブルのHashの値 | query/filter |
hashKey.operator | 任意 | 検索対象のテーブルのHashキーの検索条件defaultはイコール | query/filter |
rangeKey | 任意 | 検索対象のテーブルのHashキー情報ブロック | query/filter |
rangeKey.key | 任意 | 検索対象のテーブルのレンジキーの項目名 | query/filter |
rangeKey.val | 任意 | 検索対象のテーブルのレンジキーの値 | query/filter |
rangeKey.operator | 任意 | 検索対象のテーブルのレンジキーの検索条件defaultはイコール | query/filter |
filter | 必須 | 検索フィルター条件ブロック | filter |
filter.key | 必須 | フィルターとして使用する項目名 | filter |
filter.val | 必須 | フィルターとして使用する項目の値 | filter |
filter.operator | 任意 | フィルターとして使用する項目の検索条件defaultはイコール | filter |
config
let config = {
tableName: '<YOUR TABLE NAME>',
indexKey: '<YOUR INDEX NAME>' // optional
hashKey: {
key: '<YOUR HASH KEY NAME>',
val: '<YOUR HASH KEY STRING VALUE>', //| <YOUR HASH KEY NUMBER VALUE>
operator: '= | < | > | <= | >=' // optional
},
/* optional
rangeKey: {
key: '<YOUR RANGE KEY NAME>',
val: '<YOUR RANGE KEY STRING VALUE>', //| <YOUR RANGE KEY NUMBER VALUE>
operator: '= | < | > | <= | >=' // optional
},
filter: {
key: '<YOUR HASH KEY NAME>',
val: '<YOUR HASH KEY STRING VALUE>', //| <YOUR HASH KEY NUMBER VALUE>
operator: '= | < | > | <= | >=' // optional
}
*/
};
サンプル
sample.js
const AWS = require('aws-sdk');
const doclient = new AWS.DynamoDB.DocumentClient();
const dyqun = require('dyqun');
let config = {
tableName: '<YOUR TABLE NAME>',
hashKey: {
key: '<YOUR HASH KEY NAME>',
val: '<YOUR HASH KEY STRING VALUE>' | <YOUR HASH KEY NUMBER VALUE>
}
};
let query = new dyqun.query(config);
let params = query.get();
doclient.query(params, (err, data) => {
if(err) console.log(err);
if(data) console.log(data);
});
.get()でこんな感じのパラメータに整形して返します
parameter
let parameter = {
TableName: 'test',
KeyConditionExpression: '#hash = :hash AND #range = :range',
ExpressionAttributeNames: {'#hash': 'hash', '#range': 'key', '#filter': 'day'},
ExpressionAttributeValues: {
':hash': 'hogehoge',
':range': 11111111,
':filter': 'fugafuga'
},
FilterExpression: '#filter = :filter'
};