简介
drandx-dynogels 是一个面向 Node.js 应用程序的 Amazon DynamoDB ORM,它使用 AWS SDK 以及自己的查询语言提供了一层抽象来访问 DynamoDB。
在本篇文章中,我会详细介绍 drandx-dynogels 的使用,包括安装、配置以及使用方法,还会带着读者一起实现一个简单的示例。
安装
安装 drandx-dynogels 只需要一条命令:
npm install drandx-dynogels
配置
我们先来看看如何配置 drandx-dynogels 来访问 DynamoDB。
const dynogels = require('drandx-dynogels') dynogels.AWS.config.update({ accessKeyId: 'AKID', secretAccessKey: 'SECRET', region: 'us-west-1' })
在这里,我们通过 AWS.config.update()
方法来配置 AWS SDK 的认证信息以及访问区域。如果你还没有 AWS 账户,可以到 AWS 官方网站 注册一个账户。
为了方便访问,我们可以设置全局访问区域:
dynogels.AWS.config.update({ accessKeyId: 'AKID', secretAccessKey: 'SECRET', region: 'us-west-1' }) dynogels.dynamoDriver.region = 'us-west-1'
这样,我们就可以方便地在项目中访问 DynamoDB 了。
使用
一旦我们完成了配置,我们就可以使用 drandx-dynogels 来访问 DynamoDB。接下来,我会以代码示例的方式带领读者了解 drandx-dynogels 的使用方法。
创建表
首先,我们需要创建一个表。在 drandx-dynogels 中,我们可以通过定义一个 Model
,然后使用 Model.createTable()
方法来创建一个表。
-- -------------------- ---- ------- ----- ------- - -------------------------- - -------- -------- -- -- -------- --------- ------- -- ---- -------- - - -------- -------- --------- ------- ----- --------------- ----- -------- -- -- --- -- ------- - ------ --------------------- ----- ------------- ---- ------------- ------ --------------------------- --------- - --------- ------------- ------------ ------------ - -- ---------- --------------- -- ------------------------- -- - -- ----- - -------------------- -------- -------- ---- - ---- - ------------------ ------- --------------- - --
在这里,我们定义了一个名为 Account
的 Model
,它有一个 hashKey
为 email
,一个 rangeKey
为 name
,以及一个名为 IdxEmailName
的全局索引。
除了基本的键之外,我们还可以定义一个复杂的架构,并且可以使用 dynogels 提供的类型描述。
最后,我们通过调用 Model.createTable()
方法来创建一个名为 accounts-test
的表。
插入数据
当我们创建完表后,就可以开始插入一些数据了。在 drandx-dynogels 中,我们可以使用 Model.create()
方法来插入数据。
-- -------------------- ---- ------- ----- ------- - -------------------------- - -------- -------- ------- - ------ --------------------- ----- ------------- ---- ------------- ------ --------------------------- --------- - --------- ------------- ------------ ------------ - -- ---------- --------------- -- ----- ------- - - ------ ------------------- ----- ----- ----- ---- --- ------ --------- -------- --------- - --------- ----- ------------ - - - ----------------------- ----- ---- -- - -- ----- - -------------------- -------- ---------- ---- - ---- - -------------------- ---------- ---------- - --
在这里,我们先定义了一个名为 Account
的 Model
,然后创建了一个包含账户信息的对象,并通过 Model.create()
方法来插入数据。
查询数据
在 drandx-dynogels 中,我们可以使用类似 SQL 的查询语句来查询数据。例如,我们可以使用 Model.get()
方法来获取一条记录。
-- -------------------- ---- ------- ----- ------- - -------------------------- - -------- -------- ------- - ------ --------------------- ----- ------------- ---- ------------- ------ --------------------------- --------- - --------- ------------- ------------ ------------ - -- ---------- --------------- -- ------------------------------- ----- ----- ----- ---- -- - -- ----- - -------------------- ------- ---------- ---- - ---- - -------------------- -------- ---------- - --
在这里,我们调用了 Account.get()
方法,传入的参数是 email
和 name
,drandx-dynogels 会自动帮我们拼接条件并查询数据。
更新数据
当我们需要更新数据时,我们可以使用 Model.update()
方法。
-- -------------------- ---- ------- ----- ------- - -------------------------- - -------- -------- ------- - ------ --------------------- ----- ------------- ---- ------------- ------ --------------------------- --------- - --------- ------------- ------------ ------------ - -- ---------- --------------- -- ---------------- ------ ------------------- ----- ----- ---- -- - ---- -- -- ----- -- - -- ----- - -------------------- -------- ---------- ---- - ---- - -------------------- ------- --------------- - --
在这里,我们使用 Model.update()
方法来更新名为 John Doe
的账户的年龄为 31
。
删除数据
当我们需要删除数据时,我们可以使用 Model.destroy()
方法。
-- -------------------- ---- ------- ----- ------- - -------------------------- - -------- -------- ------- - ------ --------------------- ----- ------------- ---- ------------- ------ --------------------------- --------- - --------- ------------- ------------ ------------ - -- ---------- --------------- -- ----------------------------------- ----- ----- ----- -- - -- ----- - -------------------- -------- ---------- ---- - ---- - -------------------- ------- --------------- - --
在这里,我们使用 Model.destroy()
方法来删除名为 John Doe
的账户。
示例
最后,我会带着读者一起实现一个简单的 Web 应用,该应用使用 drandx-dynogels 来访问 DynamoDB,以实现用户注册、登录以及注销功能。
创建表
首先,我们需要创建一个名为 users-test
的表,其中 username
作为 hashKey
,password
作为 rangeKey
。
-- -------------------- ---- ------- ----- ---- - ----------------------- - -------- ----------- --------- ----------- ------- - --------- ------------------------ --------- ------------------------ ------ --------------------------- --------- - --------- ------------- ------------ ------------ - -- ---------- ------------ -- ---------------------- -- - -- ----- - -------------------- -------- -------- ---- - ---- - ------------------ ------- --------------- - --
注册用户
在这个示例中,我们使用 Express.js 作为 Web 应用框架。下面是注册用户的代码:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- ---------- - ---------------------- ----- --- - --------- -------------------------- ------------------------------- --------- ---- --- --------------------- ----- ---- -- - ----- - --------- -------- - - -------- ----- ---- - - --------- -------- - ----------------- ----- -- -- - -- ----- - -------------------- -------- ------- ---- ------ ---------------------- -------- ------ -------- ------ -- - ----------------- ---------- -------- ---------- -------- ----- -------- ------ -- -- -- ---------------- -- -- - ---------------- ---------- --
在这里,我们定义了一个 /register
的路由,并接收 username
和 password
作为参数。然后,我们创建一个包含账户信息的对象,并通过 Model.create()
方法来插入数据。
登录用户
接下来,我们需要实现登录用户的功能。
-- -------------------- ---- ------- ------------------ ----- ---- -- - ----- - --------- -------- - - -------- ------------------ --------- ----- -- -- - -- ----- - -------------------- ------- ------- ---- ------ ---------------------- -------- ------ -------- ------ -- - -- ---- - ------------------- --- -------- ------ ---------------------- -------- ------ -------- ---------- -- - ----------------- -------- -------- ---------- -------- ----- -------- ------ -- -- --
在这里,我们定义了一个 /login
的路由,并接收 username
和 password
作为参数。然后,我们使用 Model.get()
方法来获取用户信息。如果获取不到,我们返回一个错误信息;否则,我们返回登录成功的信息。
注销用户
最后,我们需要实现注销用户的功能。
-- -------------------- ---- ------- ------------------- ----- ---- -- - ----- - --------- -------- - - -------- ---------------------- --------- ----- -- - -- ----- - -------------------- -------- ------- ---- ------ ---------------------- -------- ------ -------- ------ -- - ----------------- ------- --------------- ---------- -------- ----- -------- ------ -- -- --
在这里,我们定义了一个 /logout
的路由,并接收 username
和 password
作为参数。然后,我们使用 Model.destroy()
方法来注销账户。
完成了这三个功能后,我们就实现了一个使用 drandx-dynogels 访问 DynamoDB 的 Web 应用程序。
总结
在本篇文章中,我们介绍了如何使用 npm 包 drandx-dynogels 访问 Amazon DynamoDB 数据库。我们介绍了 drandx-dynogels 的安装、配置以及使用方法,并通过一个代码示例带领读者实现了一个简单的 Web 应用程序。
通过学习文章中介绍的内容,读者可以更深入地了解 drandx-dynogels 的使用方法,以及如何在 Node.js 应用程序中访问 Amazon DynamoDB。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005666d81e8991b448e2885