npm 包 wot-model 使用教程

阅读时长 6 分钟读完

wot-model 是一个基于 Typescript 的 ORM 框架,用于编写 Node.js 服务端程序中的数据模型。它的设计借鉴了 Rails 中的 ActiveRecord 模型,在实现过程中采用了 Active Record Design Pattern

本教程将会详细介绍 wot-model 的安装、使用和扩展。

安装

在项目文件夹中运行以下命令,即可安装 wot-model:

安装成功后即可在项目中引入 wot-model:

创建模型

定义模型

在 wot-model 中,定义一个模型需要继承 wotModel.Model 类。同时需要使用 @wotModel.table 装饰器标记模型对应的数据库表。

以下是一个简单的例子:

通过 @wotModel.table 装饰器来声明这个数据模型对应的关系型数据库表。在这个例子中,我们声明了一个名为 users 的数据表,它有三个字段:nameemailage

连接数据库

使用 wot-model 需要先连接数据库。在项目启动时,使用以下代码连接:

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

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

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

这里使用了 mysql 模块来连接数据库,然后将连接对象传递给了 setConnection 方法。

查询数据

查询所有数据

使用 findAll 方法查询所有数据:

这将返回模型对应的数据表中的所有数据。

查询指定数据

使用 findOne 方法查询指定数据:

这将返回满足条件的一条数据。

如需查询所有满足条件的数据,使用 findAll 方法:

排序

使用 sort 方法可以对查询到的数据进行排序:

以上代码将返回所有年龄为 18 岁的用户,并按照名字降序排列。

取指定数量数据

使用 limit 方法可以取出指定数量的数据:

以上代码将返回年龄为 18 岁的前 10 个用户。

插入数据

使用 create 方法来插入一条数据:

这将在数据库中新建一条数据。

更新数据

使用 save 方法更新一条数据:

这将更新 id 为 123 的用户数据。

删除数据

使用 destroy 方法删除一条数据:

这将删除 id 为 123 的用户数据。

扩展

wot-model 提供了方便的扩展方式。我们可以在模型中定义新的函数来增强其功能。

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

以上例子中定义了一个 sendMessage 方法,用于向用户发送消息。我们可以在 查询到的用户数据中直接使用此方法:

或者使用静态方法增强模型的功能:

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

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

以上例子中,我们定义了一个静态方法 findYoungUser 来查找所有年龄小于等于 18 岁的用户。

总结

wot-model 是一款基于 Typescript 的 ORM 框架,通过本教程的介绍,你可以掌握其基本用法。同时也可以通过自定义函数来增强模型的功能,让 wot-model 更符合你的需求。

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

纠错
反馈