🍘

DynamoDB , scanで検索するメモ

2022/05/29に公開

概要:

DynamoDBで、scanを使用して検索するメモとなります

  • 関連する記事が少なかったので、調べてみました

構成

  • serverless-dynamodb-local
  • serverless framework
  • node 14
  • express版です

関連


参考のコード

https://github.com/kuc-arc-f/sls_express16


スキーマ

  • table: books
  • パーティションキー: id

  • .query を使用すると、パーティションキー以外は検索できないようでした

  • scan を使用して検索します


検索

lib/LibBook.js

  • FilterExpression: 条件

  • ExpressionAttributeValues: 変数に、検索する値セット

LibBook.js
  search: async function(data){
    const params = {
      TableName : "books",
      FilterExpression : "book_type = :val",
      ExpressionAttributeValues : {":val" : data.book_type }
    };
    const scanItems= await dynamoDb.scan(params).promise();
     return scanItems.Items;
  },

  • local テスト
npm i
sls dynamodb install

sls offline start
  • curlで、データ追加
curl -X POST http://localhost:3000/dev/books/add --data '{"title":"t1", "book_type": 1}'
curl -X POST http://localhost:3000/dev/books/add --data '{"title":"t2", "book_type": 2}'
curl -X POST http://localhost:3000/dev/books/add --data '{"title":"t3", "book_type": 2}'

  • 検索すると、 book_type=1 のみ検索できました
$ curl -X POST http://localhost:3000/dev/books/search --data '{"book_type": 1}'

{"ret":"OK, search: "
,"data":[
  {"book_type":1,"createdAt":1653782530552
  ,"id":"9632a780-dee2-11ec-92f4- 0302d7a9cf76","title":"t1","updatedAt":1653782530552}
]
}


関連のページ

https://zenn.dev/knaka0209/books/47b65b6912aad9/viewer/cc5f63

....

Discussion