4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dynamodbのqueryパラメータを楽に書くツールを作ってみた

Last updated at Posted at 2017-08-08

Node.jsでDynamoDBを操作するためのチートシート[DynamoDB.DocumentClient][AWS]という感じでnodejsで色々するために前からメモを書いていますが、毎回わからなくなるので簡単なquery用のパラメータを生成するモジュールを作ってみました(初公開)

dyqun

若さ故の過ち...とかではない。

git-hub: https://github.com/yukiGitHubAc/dyqun

使い方

npm i dyqun

モノとしてはパラメータを生成すだけなので生成したパラメータをDynamoDB.DocumentClient.queryのパラメータに指定して投げます。

  1. Hashキーを使った検索
  2. HashキーとRangeキーを使った検索
  3. Hashキーのみを指定して対応するRangeキーを全て取得する検索
  4. Indexを指定した検索
  5. 上記検索に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'
};
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?