我试着使用Node.js连接DynamoDB
背景
由于第一次在工作中使用DynamoDB,我打算留下一些基本笔记,以作为自己的知识积累。
环境
-
- node.js
-
- DynamoDB
- Lambda
经历过的函数
注册
- put
参数
-
- TableName: テーブル名
- Item: 登録対象
ex))
TableName: 'test-table',
Item: {
'id': 1,
'name': 'test',
}
获得
- get
参数
-
- TableName: テーブル名
- Key: AttributeValueのカラム名(一般的なTableのprimary key)
ex))
TableName: 'test-table',
Key: {
'id': 1
'sort': 1
}
搜索
- scan
参数 (Can be translated as “parameter” in Chinese)
-
- TableName: テーブル名
-
- FilterExpression: SQLの条件式
- ExpressionAttributeValues: SQLの条件式に設定する値
ex))
TableName: 'test-table',
FilterExpression: 'created_at = :now',
ExpressionAttributeValues: {
':now': '2021-01-01 00:00:00'
}
删除
- delete
参数 (Parací、
-
- TableName: テーブル名
- Key: AttributeValueのカラム名(一般的なTableのprimary key)
ex))
TableName: 'test-table',
Key: {
'id': 1
}
迷住了的事情
-
- 動作確認でListTablesを使ったが、廃止になっていた。。
-
- https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/API_ListTables_v20111205.html
-
- Scan関数1回で取得できる容量は最大1MB。最大容量以上のデータを取得する場合は複数回関数を呼び出さなければ正常な動作をしない
-
- https://qiita.com/naoko_s/items/e88928a95bb7f76e1bf0
- Scan関数のFilterExpressionはScanで全件取得した後にFilterExpressionの条件でフィルタをかけるので、場合によっては期待通りの結果にならない場合があった。。
未来的挑战
- 参考リンクに他の関数もあったので、使ってみようかな
请查看以下链接
-
- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html
- https://xp-cloud.jp/blog/2019/10/24/5698/