Sequelize 是一个 Node.js 中的 ORM(对象关系映射)框架,用于操作各种数据库。它非常方便,可以通过模型(Model)代表数据库中的表(Table)。在使用 Sequelize 的时候,会涉及到一些操作符,本文将详细介绍这些操作符及其用法。
基本的操作符
以下是 Sequelize 中最常用的操作符:
操作符 | 描述 |
---|---|
$lt |
小于 |
$lte |
小于等于 |
$gt |
大于 |
$gte |
大于等于 |
$ne |
不等于 |
$eq |
等于 |
$not |
非 |
在值为 null 的情况下,你可以使用操作符 $is
来进行判断:
Model.findAll({ where: { id: { $is: null } } });
除了这些基本的操作符之外,还有一些更高级的操作符可以使用。
集合操作符
Sequelize 提供了几个集合操作符,可以用来查询集合中是否包含指定的数据。
$in
和 $notIn
可以使用 $in
来查询特定的值。例如,查找所有名字为 Alice、Bob、Cindy 的用户:
Model.findAll({ where: { name: { $in: ['Alice', 'Bob', 'Cindy'] } } });
$notIn
的用法与 $in
相反:
Model.findAll({ where: { name: { $notIn: ['Alice', 'Bob', 'Cindy'] } } });
$any
和 $all
Sequelize 支持数组类型的列,可以使用 $any
和 $all
操作符来查询这些列。例如,在一个任务表中,我们可以查询所有负责人为 Alice 或 Bob 的任务:
Model.findAll({ where: { responsible: { $any: ['Alice', 'Bob'] }, }, });
如果我们想查询同时负责人为 Alice 和 Bob 的任务,应该使用 $all
操作符:
Model.findAll({ where: { responsible: { $all: ['Alice', 'Bob'] }, }, });
对象操作符
Sequelize 也支持一些复杂的对象操作符。
$between
使用 $between
来查找某个区间内的数据。例如,查找年龄在 18 到 25 岁之间的用户:
Model.findAll({ where: { age: { $between: [18, 25] } } });
$like
使用 $like
来查找特定的字符串。例如,查找名字中包含 Alice 的用户:
Model.findAll({ where: { name: { $like: '%Alice%' } } });
$iLike
使用 $iLike
来查找不区分大小写的字符串。例如,查找名字中包含 alice 的用户:
Model.findAll({ where: { name: { $iLike: '%alice%' } } });
$or
$or
操作符用于组合多个条件,其中只要有一个条件成立,整个查询就成立。例如,查找所有名字为 Alice 或者年龄小于等于 20 的用户:
Model.findAll({ where: { $or: [{ name: 'Alice' }, { age: { $lte: 20 } }], }, });
$and
$and
操作符用于组合多个条件,其中所有条件都应该成立。例如,查找所有名字为 Alice 并且年龄大于等于 20 的用户:
Model.findAll({ where: { $and: [{ name: 'Alice' }, { age: { $gte: 20 } }], }, });
总结
使用 Sequelize,你可以容易地完成各种数据库操作。本文介绍了一些常用的操作符及其用法,希望对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a6152148841e9894297796