Sequelize
中有两种查询:使用 Model
(模型)中的方法查询和使用 sequelize.query()
进行基于 SQL 语句的原始查询。
下面是事先创建好的数据:
1 | mysql> select * from users; |
findAll - 搜索数据库中的多个元素
1 | const result = await UserModel.findAll() // result 将是所有 UserModel 实例的数组 |
限制字段
查询时,如果只需要查询模型的部分属性,可以在通过在查询选项中指定 attributes
实现。该选项是一个数组参数,在数组中指定要查询的属性即可,这些要查询的属性就表示要在数据库查询的字段:
1 | Model.findAll({ |
字段重命名
查询属性(字段)可以通过传入一个嵌套数据进行重命名:
1 | Model.findAll({ |
demo
1 | const results = await UserModel.findAll({ |
通过 sequelize.fn 方法进行聚合查询
base demo
1 | const UserModel = sequelize.define('user', { |
通过 sequelize.fn 方法进行聚合查询
1 | Model.findAll({ |
在使用聚合函数时,要给聚合字段指定一个别名。如,在上例中我们为聚合函数指定了别名'no_hats'
,这样我们就能在查询的回调函数实例中通过 instance.get('no_hats')
来访问聚合统计的结果。
demo
1 | const results = await UserModel.findAll({ |
include/exclude
当需要查询所有字段并对某一字段使用聚合查询时,而只需要以对象的形式传入 attributes
并添加 include
子属性即可。
1 | // 拽定全查询字段比较麻烦 |
全部查询时,可以通过 exclude
子属性来排除不需要查询的字段:
1 | Model.findAll({ |