npm 包 @atlas.js/sequelize 使用教程

阅读时长 6 分钟读完

在前端开发中,使用数据库是一个不可忽视的部分,在 Node.js 中使用 Sequelize 是非常常见的方式,但是 Sequelize 自带的特性并不完善,@atlas.js/sequelize 包就是针对 Sequelize 的一个扩展。

安装

你可以通过 npm 来安装 @atlas.js/sequelize 包,运行以下命令即可:

基本使用

使用 @atlas.js/sequelize 和 Sequelize 类似,只需要将 Sequelize 替换成 AtlasSequelize 即可。以下是一个简单的示例:

-- -------------------- ---- -------
----- - -------------- - - -------------------------------

----- --------- - --- ---------------------- ----------- ----------- -
  -------- --------
  ----- ------------
---

----- ---- - ------------------------ -
  ----- -----------------
---

------------------------ -- -
  ------ -------------
    ----- -------
  ---
------------ -- -
  ---------------------------
---

更强的模型 API

@atlas.js/sequelize 在模型方面提供了更强大的可扩展 API,你可以使用定义模型的“插件”来扩展你的模型。

基本例子

下面是一个简单的插件,它为“User”模型添加了一个从“findLatest”方法中获得最新用户数据的实例方法。

-- -------------------- ---- -------
----- ---------- - ----- -------- -- -
  ----- --- ---------- --------- -- - ------ ----- --- - ----- ----------------------
    ------ ---------- -------- -- ----- ---- -----------------
  ---

  ------ ----------- -------
--

----------------- - --------- -- -- -
  --------------- - -----------

  ---------------------------- ------ -------- -- -
    --------------------- ---- -------------------
  ---

  ------------------------------- - ---------- -
    ----- ------- - - ---- ------- --
    ------ ------------------- ------------------------
  --
---

在这个例子中,我们做的是:

  • 添加了自定义方法 findLatest
  • 添加了一个添加钩子,当创建用户时会输出一条消息
  • 添加了一个实例方法,生成 API token(注意:JWT 示意使用)

现在,我们可以在 User 模型实例上执行以下操作:

也可以使用如下方式创建用户:

插件的高级例子

插件无处不在,在 @atlas.js/sequelize 中使用插件可以轻松地为模型添加更多功能。下面是一个自定义 finder 的示例,以及一个自定义模型缓存的示例。

自定义 finder:

-- -------------------- ---- -------
----- ------------------- - ----- -------- ---- -
  ----- ------ - ----- ----------------------
    ------ - ---- ----------------- ----- -- - -----
  ---

  -- ------- -
    ----- --- ----------- ----- --- ---------
  -

  ------ ---------------- - ------------ ----- ---
--

----------------- - --------- -- -- -
  ------------------------ - --------------------

  ----------------------- -
    ------ - ------- -------- --
  ---
---

在这里,我们添加了一个自定义查找器(findWithCustomQuery),它将使用 SQL 查询而不是 Sequelize 代码执行查询,该方法返回的结果与使用内置函数查找器相同(findById)。我们还为 User 模型添加了一个“范围”,使在查询活跃用户的情况下更加简单。

自定义模型缓存:

-- -------------------- ---- -------
----- ----- - --- ------

----- --------- - ----- -------- ---- -
  ----- ------ - --------------

  -- -------- -
    ------ -------
  -

  ----- ---- - ----- ------------------

  -- ------- -
    ----- --- --------- ---- ---- ----- -- --------
  -

  ------------- ------

  ------ -----
--

----------------- - --------- -- -- -
  -------------- - ----------

  --------------------------- ---- -- -
    ------------------ ------
  ---
---

在这种情况下,我们添加了一个简单的缓存。我们在 User 的构造函数中定义了一个用于缓存的简单 Map,如果查询需要的对象不存在于该缓存中,我们会执行数据库查找并将其保存在内存缓存中,以备将来使用。我们通过添加 afterCreate 钩子来保持缓存的最新状态。

结论

@atlas.js/sequelize 扩展了 Sequelize 的功能,更容易地扩展模型 API 并添加缓存等功能。尽管还没有成为必须使用的 npm 包,但是许多项目中使用它,这使得我们建议您尝试一下。

如果您对 Sequelize 或 @atlas.js/sequelize 有任何问题,可以去官方文档进行查看。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/110044