🍘
DynamoDB , scanで検索するメモ
概要:
DynamoDBで、scanを使用して検索するメモとなります
- 関連する記事が少なかったので、調べてみました
構成
- serverless-dynamodb-local
- serverless framework
- node 14
- express版です
関連
参考のコード
スキーマ
- 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}
]
}
関連のページ
....
Discussion