npm 包 waterline 使用教程

阅读时长 10 分钟读完

简介

Waterline 是一个适用于 Node.js 的对象关系映射器 (ORM),专注于强大、灵活和模块化的存储解决方案。它可以与数据存储源 (如 MySQL、MongoDB、Cassandra、PostgreSQL 等) 无缝集成,从而方便地连接和访问不同的数据库和数据源。

本文将介绍 waterline 的主要使用方法及注意事项,目的是帮助前端开发人员在项目中轻松实现数据访问、维护和处理。

安装

使用 npm install 命令安装 waterline:

基本使用

Step 1:创建连接

首先需要创建 waterline 连接器对象(Connection),指定数据库类型和连接配置。例如:

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

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

--- ---------- - --- ---------------------------------------------------------
展开代码

其中,config 中 adapters 指定支持的适配器和别名,connections 指定具体的数据库连接和配置。

Step 2:定义模型

接着需要定义 waterline 模型对象(Model),描述数据库表结构和功能定义。例如:

-- -------------------- ---- -------
--- ---- - -----------------------------
    --------- -------
    ----------- ----------
    ----------- -
        --- -
            ----- ----------
            ----------- -----
            -------------- ----
        --
        ----- -
            ----- ---------
            --------- ----
        --
        ------ -
            ----- ---------
            --------- -----
            ------- ----
        --
        --------- -
            ----- ---------
            --------- ----
        -
    -
---
展开代码

其中,identity 指定模型名称,connection 指定连接名称,attributes 指定属性集合和其对应数据类型和约束条件。主键、自增和唯一值设置需要配置在对应属性的上一级属性中,例如 primaryKey、autoIncrement 和 unique。

Step 3:操作数据

最后,通过链式方法调用实现数据的增删改查操作。例如:

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

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

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

-------------------- ----------------------------------- ----- -
    ---------------------- --------
---
展开代码

其中,exec 方法为异步回调函数,用于处理成功或失败的结果。除 create 方法外,其他方法均返回 Promise 对象,可以使用 await 关键字处理异步调用。

注意事项

数据类型

水娃 line 支持的数据类型包括:字符串 (string)、文本 (text)、整数 (integer)、浮点数 (float)、布尔值 (boolean)、日期时间 (datetime)、数组 (array)、对象 (json) 等。其中,arrays 和 json 的示例配置如下:

-- -------------------- ---- -------
--- ---- - -----------------------------
    ----------- -
        ----- -
            ----- -------
        --
        -------- -
            ----- ------
        -
    -
---
展开代码

数据校验

水娃 line 提供多种数据校验方式,可以通过配置 attributes 的相关属性实现。例如:

-- -------------------- ---- -------
--- ---- - -----------------------------
    ----------- -
        ----- -
            ----- ---------
            --------- -----
            ---------- --
            ---------- --
        --
        ------ -
            ----- ---------
            --------- -----
            ------- -----
            -------- ----
        --
        ---- -
            ----- ----------
            --------- -----
            ---- ---
            ---- ---
        -
    -
---
展开代码

关联查询

水娃 line 支持多种关联查询方式,包括一对多、多对多、一对一等。可以通过配置 attributes 的相关属性和方法实现。例如:

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

--- ---- - -----------------------------
    ----------- -
        ----- -
            ----- ---------
            --------- ----
        --
        ------ -
            ----- ---------
            --------- ----
        --
        ------ -
            ------ -------
        -
    -
---
展开代码

其中,Group 中的 members 和 User 中的 group 均为关联属性,通过 via 和 model 方法指定对应关系。

示例代码

完整示例代码如下:

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

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

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

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

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

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

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

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

-------------------- ----------------------------------- ----- -
    ---------------------- --------
---
展开代码

通过本文的介绍和示例,你可以轻松地使用 waterline 包实现复杂的数据存储和处理。希望本文能够帮助你提升工作效率和技能水平。

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

纠错
反馈

纠错反馈