npm 包 mongoose-model-agenda 使用教程

阅读时长 5 分钟读完

前言

在 Node.js 中,我们经常需要与 MongoDB 这样的数据库进行交互。而在进行 MongoDB 数据库开发时,比较常用的库就是 Mongoose。而 Mongoose 中提供了一种轻量的任务调度工具——Agenda。本文将介绍一款基于 Mongoose 和 Agenda 的 npm 包——mongoose-model-agenda,它将 Mongoose 的多数特性封装在一个 MongoDB Schema 中,并使用 Agenda 来执行任务调度。

安装

使用

基本使用

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

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

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

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

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

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

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

-----------

高级使用

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

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

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

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

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

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

-----------

API

defineAgendaModel(name, schema, [options])

创建一个带有 Agenda 任务调度功能的 Mongoose 模型。

参数:

  • name:字符串,模型名称。
  • schema:Schema,Mongoose Schema 实例。
  • options:可选,对象,初始化选项。
    • options.agendaOptions:可选,对象,设置 Agenda 的选项。

返回一个 Model 实例。

Model.schedule(interval, name, [data])

安排一个任务调度。

参数:

  • interval:字符串,规定执行时间间隔的 cron 格式字符串,或者一个可被 Moment.js 解析的字符串、日期对象、时间戳或 Moment.js 对象。
  • name:字符串,任务名称。
  • data:可选,对象,用来传递给任务的额外数据。

返回一个 Agenda job 实例。

Job.repeatEvery(interval)

重复执行任务的时间间隔。

参数:

  • interval:字符串,规定执行时间间隔的 cron 格式字符串,或者一个可被 Moment.js 解析的字符串、日期对象、时间戳或 Moment.js 对象。

Job.repeatAt(time)

重复执行任务的时间点。

参数:

  • time:字符串,规定执行时间点的 cron 格式字符串,或者一个可被 Moment.js 解析的字符串、日期对象、时间戳或 Moment.js 对象。

Job.unique(opts)

将任务设为唯一任务,重复执行时会被忽略。

参数:

  • opts:对象,设置唯一任务的选项。
    • opts.name:字符串,设置任务的 name 属性。
    • opts.immediate:布尔型,禁用完全重复任务的所有未完成的任何实例。默认为 false。
    • opts.unique:字符串或对象,在锁定期间要设置为唯一的 job 属性。默认为 { name: 1, lockedAt: 1, data: 1 }

Job.disable()

禁用任务执行。

Job.enable()

启用任务执行。

Job.save()

将任务保存至数据库中并启动任务的执行。

总结

mongoose-model-agenda 是一个非常轻量的任务调度工具,它不仅提供了 Agenda 的所有功能,还将 Mongoose 的大部分特性封装在一个 MongoDB Schema 中,极大地方便了开发者的使用。在使用时,我们除了需要熟悉 Agenda 的使用外,还要明确任务的功能和执行的时间。在任务调度功能的帮助下,我们可以极大地减少了定时任务的执行成本,提高了开发效率。

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

纠错
反馈