介绍
dynamodb-type-formatter 是一个用来将 JavaScript 对象类型转换成 DynamoDB 中的属性类型的 npm 包,它可以方便地将 JavaScript 对象序列化成 DynamoDB 的格式,也可以将 DynamoDB 属性类型反序列化成 JavaScript 对象类型。
此 npm 包可以极大地简化开发人员与 DynamoDB 相关的编码工作,是一个非常不错的 DynamoDB 工具包。
安装
使用 npm 包管理器通过以下命令安装:
npm install dynamodb-type-formatter
使用
dynamodb-type-formatter 的使用非常简单,只需要创建一个 DynamoDBTypeFormatter
实例,并调用其 convertToDynamoDB
和 convertToObject
方法即可。
1. 将 JavaScript 对象类型转换为 DynamoDB 属性类型
将 JavaScript 对象格式转换为 DynamoDB 格式可以通过 convertToDynamoDB
方法实现。示例代码如下:
-- -------------------- ---- ------- ----- --------------------- - ----------------------------------- ----- --------- - --- ------------------------ ----- ----- - - --- - ----- --------- -- ----- - --- -- ----- ------- ------- ----- -- ---------- --- ------- ----- -------- ------- -------- ----- - --------- ------- -- -- ----- ----------------------- - ----------------------------------- -------------------------------------
该代码将输出符合 DynamoDB 格式的对象,如下:
{ id: { S: '123abc' }, user: { M: { id: { N: '1' }, name: { S: 'John' }, active: { BOOL: true } } }, createdAt: { S: 'Sat Jul 31 2021 00:00:00 GMT+0800 (中国标准时间)' }, tags: { SS: [ 'tag1', 'tag2', 'tag3' ] }, meta: { M: { category: { S: 'test' } } } }
2. 将 DynamoDB 属性类型转换为 JavaScript 对象类型
将 DynamoDB 格式转换为 JavaScript 对象格式可以通过 convertToObject
方法实现。示例代码如下:
-- -------------------- ---- ------- ----- --------------------- - ----------------------------------- ----- --------- - --- ------------------------ ----- -------------- - - --- - -- -------- -- ----- - -- - --- - -- --- -- ----- - -- ------ -- ------- - ----- ---- - - -- ---------- - -- ---- --- -- ---- -------- -------- --------- -- ----- - --- - ------- ------- ------ - -- ----- - -- - --------- - -- ------ - - - -- ----- --------------- - ------------------------------------------ -----------------------------
该代码将输出转换后的 JavaScript 对象,如下:
{ id: { uuid: '123abc' }, user: { id: 1, name: 'John', active: true }, createdAt: 2021-07-30T16:00:00.000Z, tags: [ 'tag1', 'tag2', 'tag3' ], meta: { category: 'test' } }
深入研究
dynamodb-type-formatter 支持的数据类型非常多,它将 JavaScript 对象类型和 DynamoDB 属性类型之间的映射关系写在了一个名为 TypeMap
的文件中,下面我们来简单介绍一下这个映射表中的内容。
1. 支持的 JavaScript 对象类型
dynamodb-type-formatter 支持以下 JavaScript 对象类型:
Number
String
Boolean
Date
Array
Object
undefined
Set
(不支持嵌套 Set 类型)
2. 支持的 DynamoDB 属性类型
dynamodb-type-formatter 支持以下 DynamoDB 属性类型:
S
(字符串类型)N
(数字类型)BOOL
(布尔类型)L
(List 类型)M
(Map 类型)NULL
(空数据类型)SS
(字符串集合类型)NS
(数字集合类型)BS
(二进制集合类型)
具体的类型映射关系请参考 TypeMap
文件。
示例代码
下面我们将演示一下更具实际意义的使用场景。
我们假设有一个名为 user
的 DynamoDB 表,其中有以下属性:
id
(主键,类型为字符串)name
(类型为字符串)age
(类型为数字)idCard
(类型为字符串)createdAt
(类型为日期)
下面我们来演示如何使用 dynamodb-type-formatter 进行数据的 CRUD 操作。
1. 在 JavaScript 对象格式和 DynamoDB 格式之间进行转换
demo:
-- -------------------- ---- ------- ----- --------------------- - ----------------------------------- ----- --- - ------------------- ----- -------- - --- --------------- ----- ---- - - --- ------ ----- ------- ---- --- ------- ------------------- ---------- --- ------- -- ----- --------- - --- ------------------------ -- - ---- --- -------- -- ----- ----------------------- - ---------------------------------- ------------------------------------- -- -- ----------------------- -- -------- ---- ------------------ ---------- ------- ----- ------------------------ -- ----- ----- -- - ---------------- ------ --- -- -- -------- ----------- ---------- ---- ------------------ ---------- ------- ---- - ----- - -- ----- -- -- -- ----- ----- -- - -------------------------------------------------- ---
2. 批量处理操作
demo:
-- -------------------- ---- ------- ----- --------------------- - ----------------------------------- ----- --- - ------------------- ----- -------- - --- --------------- ----- ----- - - - --- ------ ----- ------- ---- --- ------- ------------------- ---------- --- ------- -- - --- ------ ----- ------- ---- --- ------- ------------------- ---------- --- ------- -- - --- ------ ----- ------- ---- --- ------- ------------------- ---------- --- ------- -- -- ----- --------- - --- ------------------------ -- ---------- -------- -- ----- -------------------- - -------------- -- ----------------------------------- ---------------------------------- -- -- -------------- ------ ----- ------ - - ------------- - ------- ----------------------------- -- -- ----------- - ----- ----- -- ---- -- -- ------------------------------- ----- ----- -- - ---------------- ------ --- -- ------------- ---------- ---- ----- ---- - -------------- -- -- --- - -- ------- - ---- ----------------------- ------------- - ------- - ----- ----- -- -- -- ----- ----- -- - ---------------------------------------- -- ---------------------------------- ---
结论
dynamodb-type-formatter 是一个非常实用的 DynamoDB 工具包,在开发中可以极大地简化开发人员与 DynamoDB 相关的编码工作。本文对该工具包的使用做了详细的演示,并对其实现原理作了简单的介绍,希望对读者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005515481e8991b448ce6c2