返回

从入门到精通,Egg.js 查询:花样查询学起来!

前端

Egg.js 查询:

1. 基础查询
- find():查询所有记录。
- findById():根据 ID 查询记录。
- findOne():查询一条记录。
- count():统计记录数量。
- min():获取最小值。
- max():获取最大值。
- sum():获取总和。
- avg():获取平均值。

2. 高级查询
- where():条件查询。
- orWhere():或条件查询。
- andWhere():与条件查询。
- orderBy():排序。
- limit():限制查询结果数量。
- offset():跳过指定数量的查询结果。
- select():选择要查询的字段。
- distinct():去除重复记录。
- join():关联查询。

3. ** 复杂查询举例:**
const users = await ctx.model.User.findAll({ where: { age: { [Sequelize.Op.gt]: 18, [Sequelize.Op.lt]: 30 }, gender: 'male' }, order: [['age', 'DESC']], limit: 10, offset: 20 });
此查询将返回年龄在18到30岁之间的男性用户,按年龄降序排列,跳过前20条记录,只返回10条记录。

4. 查找不存在则创建
- findOrCreate():检查数据库中是否已存在某个元素。如果是这种情况,则该方法将生成相应的实体。否则,它将创建一个新的实体。
- 该方法返回一个数组,第一个元素是实体,第二个元素是一个布尔值,指示实体是否已存在。
- 如果实体已存在,则布尔值为 true;否则,布尔值为 false

```
const [user, created] = await ctx.model.User.findOrCreate({
  where: {
    name: 'John Doe'
  }
});
```
**此查询将检查数据库中是否存在名为“John Doe”的用户。如果是这种情况,则该方法将返回现有用户。否则,它将创建一个新的用户并返回该用户。** 

**created 变量将包含一个布尔值,指示用户是否已存在。** 

5. 注意:
- findOrCreate() 方法仅适用于具有主键的模型。
- 如果模型没有主键,则该方法将引发错误。

更多精彩内容,尽在 Egg.js 官方文档