npm 包 objection 使用教程

阅读时长 8 分钟读完

简介

Objection 是一个基于 knex.js 的 ORM 框架,提供了各种方便快捷的 SQL 查询方法,支持预加载、关联查询、数据筛选等功能,使用它可以快速地构建出功能强大的 Node.js 应用。

本教程将详细介绍 Objection 的使用方法,包括安装、配置、操作数据库等方面的内容,希望能够帮助大家学习和掌握该框架。

安装

首先需要安装 node.js 和 npm,如果没有的话请先安装。

然后,使用 npm 安装 objection:

同时,需要使用一个数据库适配器,例如 MySQL、PostgreSQL、SQLite 等。以 MySQL 为例,安装适配器:

配置

  1. 创建数据库

首先需要在 MySQL 中创建一个数据库,例如:

  1. 创建数据库表

在 objection_demo 数据库中创建表 person:

  1. 配置 knex.js

在使用 Objection 之前,需要先配置 knex.js。

新建文件 knexfile.js,添加以下内容:

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

其中,client 表示使用的数据库类型,这里使用 MySQL;connection 是连接配置,包括数据库地址(host)、用户名(user)、密码(password)以及要连接的数据库名称(database)。

操作数据库

Model

Model 是 Objection 的核心部分,它用来描述数据表,在应用中通过 Model 的方法来操作数据表。

  1. 创建 Model

新建一个 Person.js 文件,定义 Person Model:

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

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

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

在这里,Person 继承自 Objection 的 Model 类,定义了 tableName 字段,对应到 person 表。

  1. 查询数据

可以通过以下方法查询数据:

  • query():返回一个 knex.js 的查询构造器,可以使用 knex.js 的各种查询方法。
  • findById(id):根据 id 查询数据。
  • query().where(condition):根据条件查询数据,condition 可以是一个普通对象,也可以是一个函数。
  • query().orderBy(column, order):根据指定的列和排序规则进行排序。
  • query().page(pageSize, page):分页查询数据,pageSize 表示每页多少条数据,page 表示当前页数。

示例代码:

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

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

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

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

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

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

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

插入数据

可以通过以下方法插入数据:

  • .$query().insert(data):插入一条数据,data 是一个普通对象。
  • .$query().insertAndFetch(data):插入一条数据,并返回插入后的数据。
  • .$query().insertGraph(data):一次性插入一组数据,数据可以包含关联关系。

示例代码:

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

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

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

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

更新数据

可以通过以下方法更新数据:

  • .$query().patch(data):更新一条数据,data 是一个普通对象。
  • .$query().update(data):更新多条数据,data 是一个普通对象。
  • .$query().upsertGraph(data, options):更新一组数据,包含关联关系。

示例代码:

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

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

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

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

删除数据

可以通过以下方法删除数据:

  • .$query().delete():删除一条数据。
  • .$query().deleteById(id):根据 id 删除数据。

示例代码:

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

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

总结

本教程详细介绍了 Objection 的使用方法,包括安装、配置、操作数据库等方面的内容,并且给出了具体的示例代码。

Objection 是一个功能强大的 ORM 框架,可以在 Node.js 应用中轻松地操作数据库。希望大家能够通过本教程学会 Objection 的使用,并在实际开发中掌握该框架,为日后的工作打下坚实的基础。

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

纠错
反馈