wot-model 是一个基于 Typescript 的 ORM 框架,用于编写 Node.js 服务端程序中的数据模型。它的设计借鉴了 Rails 中的 ActiveRecord 模型,在实现过程中采用了 Active Record Design Pattern。
本教程将会详细介绍 wot-model 的安装、使用和扩展。
安装
在项目文件夹中运行以下命令,即可安装 wot-model:
npm install wot-model
安装成功后即可在项目中引入 wot-model:
import * as wotModel from 'wot-model';
创建模型
定义模型
在 wot-model 中,定义一个模型需要继承 wotModel.Model
类。同时需要使用 @wotModel.table
装饰器标记模型对应的数据库表。
以下是一个简单的例子:
import * as wotModel from 'wot-model'; @wotModel.table('users') export class User extends wotModel.Model { name: string; email: string; age: number; }
通过 @wotModel.table
装饰器来声明这个数据模型对应的关系型数据库表。在这个例子中,我们声明了一个名为 users
的数据表,它有三个字段:name
、email
和 age
。
连接数据库
使用 wot-model 需要先连接数据库。在项目启动时,使用以下代码连接:
-- -------------------- ---- ------- ------ - -- -------- ---- ------------ ------ - -- ----- ---- -------- ----- -- - ------------------------ ----- ------------ ----- --------------- --------- --------------- --------- -------------- --- ---------------------------
这里使用了 mysql
模块来连接数据库,然后将连接对象传递给了 setConnection
方法。
查询数据
查询所有数据
使用 findAll
方法查询所有数据:
const users = await User.findAll();
这将返回模型对应的数据表中的所有数据。
查询指定数据
使用 findOne
方法查询指定数据:
const user = await User.findOne({name: 'jack'});
这将返回满足条件的一条数据。
如需查询所有满足条件的数据,使用 findAll
方法:
const users = await User.findAll({age: 18});
排序
使用 sort
方法可以对查询到的数据进行排序:
const users = await User.findAll({age: 18}).sort({name: 'desc'});
以上代码将返回所有年龄为 18 岁的用户,并按照名字降序排列。
取指定数量数据
使用 limit
方法可以取出指定数量的数据:
const users = await User.findAll({age: 18}).limit(10);
以上代码将返回年龄为 18 岁的前 10 个用户。
插入数据
使用 create
方法来插入一条数据:
const data = { name: 'jack', email: 'jack@example.com', age: 18 } const user = await User.create(data);
这将在数据库中新建一条数据。
更新数据
使用 save
方法更新一条数据:
const user = await User.findOne({id: 123}); user.name = 'new name'; user.age = 19; await user.save();
这将更新 id 为 123 的用户数据。
删除数据
使用 destroy
方法删除一条数据:
const user = await User.findOne({id: 123}); await user.destroy();
这将删除 id 为 123 的用户数据。
扩展
wot-model 提供了方便的扩展方式。我们可以在模型中定义新的函数来增强其功能。
-- -------------------- ---- ------- ------------------------ ------ ----- ---- ------- -------------- - ----- ------- ------ ------- ---- ------- ----- -------------------- ------- - ----------------- ------- -- -------------- ------------- - -
以上例子中定义了一个 sendMessage
方法,用于向用户发送消息。我们可以在 查询到的用户数据中直接使用此方法:
const user = await User.findOne({name: 'jack'}); await user.sendMessage('Hello');
或者使用静态方法增强模型的功能:
-- -------------------- ---- ------- ------------------------ ------ ----- ---- ------- -------------- - ----- ------- ------ ------- ---- ------- ------ ----- --------------- - ------ ----- ------------------ ------ ------ - -
以上例子中,我们定义了一个静态方法 findYoungUser
来查找所有年龄小于等于 18 岁的用户。
const users = await User.findYoungUser();
总结
wot-model 是一款基于 Typescript 的 ORM 框架,通过本教程的介绍,你可以掌握其基本用法。同时也可以通过自定义函数来增强模型的功能,让 wot-model 更符合你的需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005557a81e8991b448d2a5c