📜  sequelize 运算符 - Javascript (1)

📅  最后修改于: 2023-12-03 15:05:10.673000             🧑  作者: Mango

Sequelize运算符 - Javascript

Sequelize是一个JavaScript ORM(Object-relational mapping)工具,可用于Node.js应用程序。它提供了各种操作数据库的方法和运算符。在本篇文章中,将介绍Sequelize运算符并提供代码示例。

比较运算符
Op.and

用于组合多个条件,所有条件都必须为真。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    [Op.and]: [{ firstName: 'John' }, { lastName: 'Doe' }],
  }
});

上述代码将查询所有名为John Doe的用户。

Op.or

用于组合多个条件,至少有一个条件为真。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    [Op.or]: [{ firstName: 'John' }, { lastName: 'Doe' }],
  }
});

上述代码将查询所有名字为John或姓氏为Doe的用户。

Op.gt

检查是否大于给定的值。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    age: {
      [Op.gt]: 18,
    }
  }
});

上述代码将查询所有年龄大于18岁的用户。

Op.gte

检查是否大于或等于给定的值。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    age: {
      [Op.gte]: 18,
    }
  }
});

上述代码将查询所有年龄大于或等于18岁的用户。

Op.lt

检查是否小于给定的值。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    age: {
      [Op.lt]: 18,
    }
  }
});

上述代码将查询所有年龄小于18岁的用户。

Op.lte

检查是否小于或等于给定的值。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    age: {
      [Op.lte]: 18,
    }
  }
});

上述代码将查询所有年龄小于或等于18岁的用户。

Op.ne

检查是否不等于给定的值。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    age: {
      [Op.ne]: 18,
    }
  }
});

上述代码将查询所有年龄不等于18岁的用户。

Op.between

检查值是否在范围内。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    age: {
      [Op.between]: [18, 30],
    }
  }
});

上述代码将查询所有年龄在18岁到30岁之间的用户。

逻辑运算符
Op.not

返回与条件相反的结果。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    age: {
      [Op.not]: 18,
    }
  }
});

上述代码将查询所有年龄不等于18岁的用户。

字符串运算符
Op.endsWith

检查是否以给定的字符串结尾。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    firstName: {
      [Op.endsWith]: 'Doe',
    }
  }
});

上述代码将查询所有名字以Doe结尾的用户。

Op.startsWith

检查是否以给定的字符串开始。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    firstName: {
      [Op.startsWith]: 'Joh',
    }
  }
});

上述代码将查询所有名字以Joh开头的用户。

Op.substring

检查字符串是否包含给定的子字符串。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    firstName: {
      [Op.substring]: 'ohn',
    }
  }
});

上述代码将查询所有名字中包含ohn的用户。

数组运算符
Op.contains

检查数组是否包含给定的元素。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    hobbies: {
      [Op.contains]: ['football'],
    }
  }
});

上述代码将查询所有喜欢足球的用户。

Op.overlap

检查数组是否有重叠。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    hobbies: {
      [Op.overlap]: ['swimming', 'jogging'],
    }
  }
});

上述代码将查询所有既喜欢游泳又喜欢慢跑的用户。

集合运算符
Op.in

检查值是否在给定的集合中。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    age: {
      [Op.in]: [18, 20, 25],
    }
  }
});

上述代码将查询所有年龄为18、20或25岁的用户。

Op.notIn

检查值是否不在给定的集合中。例如:

const { Op } = require('sequelize');
const users = await User.findAll({
  where: {
    age: {
      [Op.notIn]: [18, 20, 25],
    }
  }
});

上述代码将查询所有年龄不为18、20或25岁的用户。

结论

Sequelize运算符是非常强大和易于使用的,可以大大简化数据库查询。除了本文介绍的运算符外,Sequelize还提供了其他许多运算符,具体可参考官方文档。