第四章 模型查询

模型的所以实例方法在 d.ts 的 3579 行。

findAll(options?: FindOptions): Promise<TInstance[]>;

对于有查询的配置项的接口是 FindOptions。这个接口在 3188 行。而且接口上面也有英文注释,说明了如何使用。平常所用到的并不会那么难以配置,所以接下来会有一些常用。

attributes 属性

指定特定属性字段

User.findAll({
  attributes: ['name', 'email']
});

重命名(将 name 重命名为 username)

User.findAll({
  attributes: [['name', 'username'], 'email']
});

添加一个新的字段属性,通过函数来计算它的值

Like.findAll({
  attributes: [[sequelize.fn('COUNT', sequelize.col('type')), 'post_like_count']],
  where: { id: 2, type: 'post'}
});

post_like_count 为 id =2 ,type = post 的结果行数。当前语句查出来只有 post_like_count 一个字段。

假如希望保留原来默认的所以字段,然后再添加这个新的函数字段,可以使用 attributes.include 选项。

排除字段属性

where 条件

普通用法(等于)

最简单的用法就是在 where 里面写下键值对,左边属性,右边值。

字段操作符

相比较之前的值,现在变成了配置项。

配置项支持以下操作符 (有 SQL 基础应该一眼就能明白)

并且操作符是支持嵌套的。

900 < rank < 1000

title LIKE 'Boat%' OR description LIKE '%boat%' 查询 title 或者 description 有关 boat 的数据。

limit and offset 限定与偏移量

在实现分页功能的时候,需要限定返回的数据与偏移量。

order 排序

DESC - ASC

D - 低 从大到小 A 从小到大

根据 createdAt 从大到小

根据 age 排序

根据 age 从大到小排序

根据相关联的 Task 模型的 createdAt 从大到小排序

group 分组

该语句会查出,tag 与 几篇 Post 相建立关系。假如不加 group,查出来的数据会有一些没用的,所以我们通过 group 过滤掉重复的 tag_id

Last updated