npm包 waterline-cursor 使用教程

阅读时长 4 分钟读完

简介

waterline-cursor 是一个 npm 包,用来实现与 waterline 框架一起工作的数据库游标。游标是查询结果集上可滚动的位置标记,可以逐个访问数据,适用于大数据集合。

如果要实现对大数据集合的查询和处理,传统的分页查询,比较耗时而且容易出现重复数据和遗漏数据等问题,使用游标操作可以精准定位每条数据位置,并高效的获取大量数据,避免数据的遗漏和重复读取。

waterline-cursor使用起来比较简单,只需要传入相应的参数即可实现游标操作。

安装

使用 npm 可以方便的进行安装。

使用

安装 waterline-cursor 之后,可通过以下方式进行使用。

初始化

建议将 waterline-cursor 包添加到项目依赖中,并将其引入项目。

参数

创建游标之前,我们需要传入相应的参数,包括 modelquery

  • model:需要进行查询的模型,通过 waterline 创建。
  • query:是一个对象,包含查询条件以及其他查询参数,如 where 和 select。

查询数据

以下为示例代码,使用了 sails.js 框架集成的 waterline 进行所有操作,其余框架需要针对自己的框架进行修改。

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

接下来我们分别讲解上述代码中各个参数及其作用:

  • where:是一个对象,由 waterline 提供,用于存储查询条件
  • select:是一个数组,由 waterline 提供,用于存储需要查询的字段
  • Model:是通过 sails.js 创建的模型
  • cursor:用于创建游标
  • fetch:用于获取符合条件的分页数据,一次最多只可获取999条

这里,我们使用 user 模型进行数据查询,设置 username 字段等于 user,并指定需要查询的字段。游标使用 Cursor 来创建,并且在获取数据之前需要使用 fetch 方法来指定查询结果的数量。

查询到的数据将会返回一个数组,其中存储了查询结果集。

游标查询

游标查询要比传统的分页查询更为高效,可以精准定位每条数据位置,无需服务器进行计算。以下为示例代码。

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

上述代码中,我们使用游标查询前50个结果,忽略前10个结果,也就是说,按照 id 字段进行排序的话,返回结果将是 id 在从 10 到 60 的范围内。limitskip 方法用于指定查询开始位置和查询结果的数量,并将其传递给 fetch 方法,用于获取需要查询的数据。

游标关闭

必须通过调用 close 方法来关闭游标,从而释放资源。

总结

waterline-cursor 的使用相对来说比较简单,可以方便的实现游标查询。在处理大数据集合时,传统的分页查询确实很难处理,而游标查询可以很高效的处理查询,并且精确的定位每条数据的位置,避免数据遗漏或读取数据的重复。对于前端类开发人员而言,waterline-cursor是一个非常优秀的数据库游标,可以在大数据集合下快速定位查询并高效的获取数据。

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

纠错
反馈