介绍
在 Node.js 开发中,我们经常需要对数据库进行增删改查的操作。针对 AWS 的 DynamoDB 数据库,提供了一个优秀的 Node.js ORM 库 —— dynogels。dynogels 能够提供简单、高效的使用方式,支持多种查询操作,从而大大降低开发成本。
安装
在使用 dynogels 之前,需要先通过 npm 安装它。
npm install @aneilbaboo/dynogels --save
使用
连接 DynamoDB
在使用 dynogels 之前,需要先通过 AWS SDK 连接到 DynamoDB。
-- -------------------- ---- ------- --- --- - ------------------- ------------------- ------- ------------ ------------ ------------------- ---------------- ---------------------- --- --- -------- - -------------------------------- ------------------------- ----------------展开代码
代码中我们指定了要连接到的 AWS 区域,并设置了 accessKeyId 和 secretAccessKey。必要时,这些配置项可以通过环境变量或 AWS 配置文件进行配置。
定义模型
在 dynogels 中使用模型来表示 DynamoDB 中的表。先来看一个示例,假设我们要操作一个名为 Book 的表。
-- -------------------- ---- ------- --- ---- - ----------------------- - -------- ----- ----------- ----- ------- - --- ---------------------- ------ ------------- ------- ------------ -- ---------- ------- ---展开代码
在定义模型时,需要指定以下属性:
- hashKey: 必选项,表示散列键名称。
- schema: 必选项,表示表结构。使用 Joi 的语法进行定义。
- tableName: 选填项,表示表名称。如果不指定,将使用模型名称。
- timestamps: 选填项,表示是否需要使用创建时间和修改时间。
CRUD 操作
接下来,我们来看看如何通过 dynogels 进行 CRUD 操作。
创建
对于上面定义的 Book 模型,我们可以使用以下代码来创建一条新记录。
-- -------------------- ---- ------- ------------- ------ ------- -------- ------- ------- -- ------------- ----- - -- ----- - ----------------- - ---- - ------------------ - ---展开代码
在创建记录时,可以通过回调函数获取创建后的记录。
查询
dynogels 支持多种查询方式,包括全表扫描、条件查询和分页查询等。这里我们以查询 Book 表中的所有记录为例。
book.scan().loadAll().exec(function(err, data) { if (err) { console.log(err); } else { console.log(data); } });
在查询时,我们需要指定以下属性:
- loadAll: 选填项,表示是否需要查询所有属性。
更新
对于上面创建的记录,我们可以使用以下代码来更新它的作者。
-- -------------------- ---- ------- ------------- --- --------- ------- ------ --- -- ------------- ----- - -- ----- - ----------------- - ---- - ------------------ - ---展开代码
在更新时,需要指定主键值以及要修改的属性。
删除
对于上面创建的记录,我们可以使用以下代码来删除它。
book.destroy("123456", function(err, data) { if (err) { console.log(err); } else { console.log(data); } });
在删除时,需要指定主键值。
总结
通过本文,我们了解了如何使用 dynogels 对 AWS DynamoDB 进行操作。在实际开发中,需要根据具体场景合理选择查询方式,以提升查询效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60057c4881e8991b448ebcd6