Sequelize 中如何使用 Op.notIn 进行条件查询

Sequelize 是一个基于 Node.js 的 ORM(对象关系映射)框架,使用它可以进行关系型数据库的操作。在通常的查询中,我们会用到 SQL 中的 where 子句。在 Sequelize 中也有相应的方法来进行条件查询,而 Op.notIn 则是其中一个重要的操作符。

Op.notIn

Op.notIn 是 Sequelize 中用于操作「不在某个值数组中」的操作符。它接收一个数组,返回一个 SQL 语句字符串,如:

const { Op } = require('sequelize');

const where = {
  id: {
    [Op.notIn]: [1, 2, 3]
  }
}

User.findOne({ where }) // SELECT * FROM "users" WHERE "id" NOT IN (1,2,3) LIMIT 1;

使用 Op.notIn 的关键是设置一个数组,指定不在数组中的值将被匹配。该数组可以是任何数据类型的数组,包括字符串、数字、布尔、日期等等。

示例代码

在实践中, Op.notIn 可以帮助我们处理一些与集合相关的操作。以下是一个示例代码,其中我们使用 Op.notIn 取出所有年龄不是 18 年的人:

const { Op } = require('sequelize');
const User = require('./models/user.js');

async function findAdults() {
  try {
    const adults = await User.findAll({
      where: {
        age: {
          [Op.notIn]: [18]
        }
      }
    });
    console.log(adults);
  } catch (error) {
    console.error(error);
  }
};

findAdults(); // 输出所有年龄不是 18 岁的人列表

总结

Op.notIn 是 Sequelize 中一个非常有用的操作符。它可以通过指定不在数组中的值来匹配符合条件的记录,方便我们处理一些特定的查询。当我们需要进行条件查询时,可以使用 Op.notIn 来进行筛选。在实践中,我们要注意数据类型的一致性,避免出现数据类型不匹配的错误。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a0490badd4f0e0ff8aae92


纠错反馈