Sequelize 模型查询基础教程:从入门到精通
【免费下载链接】sequelize-docs-Zh-CN 项目地址: https://gitcode.com/gh_mirrors/se/sequelize-docs-Zh-CN
前言
Sequelize 是一个强大的 Node.js ORM 框架,它提供了丰富的查询方法来操作数据库。本教程将详细介绍 Sequelize 中最基础的 CRUD(增删改查)操作,帮助开发者快速上手数据库操作。
创建记录(INSERT)
基本创建方法
使用 Model.create() 方法可以快速创建并保存一条记录:
const user = await User.create({
username: 'john_doe',
email: 'john@example.com'
});
console.log(user.id); // 输出自动生成的ID
安全创建记录
在实际应用中,我们经常需要限制可创建的字段,防止恶意数据插入:
const user = await User.create({
username: 'admin',
isAdmin: true // 即使传递了isAdmin,也不会被保存
}, {
fields: ['username'] // 只允许创建username字段
});
查询记录(SELECT)
查询所有记录
const users = await User.findAll();
console.log(users.length); // 输出用户数量
选择特定字段
User.findAll({
attributes: ['id', 'username'] // 只查询id和username字段
});
字段重命名和聚合
import { fn, col } from '@sequelize/core';
User.findAll({
attributes: [
'id',
['username', 'name'], // 将username重命名为name
[fn('COUNT', col('posts')), 'postCount'] // 计算每个用户的帖子数
]
});
条件查询(WHERE)
基础条件查询
User.findAll({
where: {
age: {
[Op.gt]: 18 // 年龄大于18
}
}
});
组合条件
const { Op } = require('@sequelize/core');
User.findAll({
where: {
[Op.or]: [
{ age: { [Op.lt]: 18 } },
{ age: { [Op.gt]: 65 } }
]
}
});
JSON 数据查询
// 查询meta字段中包含特定JSON结构的记录
User.findAll({
where: {
meta: {
preferences: {
theme: 'dark'
}
}
}
});
更新记录(UPDATE)
// 将所有未验证的用户标记为已验证
await User.update(
{ verified: true },
{
where: {
verified: false
}
}
);
删除记录(DELETE)
// 删除所有未激活的用户
await User.destroy({
where: {
active: false
}
});
批量操作
批量创建
await User.bulkCreate([
{ username: 'user1' },
{ username: 'user2' },
{ username: 'user3' }
]);
批量更新
// 批量增加年龄
await User.increment(
{ age: 1 },
{
where: {
status: 'active'
}
}
);
排序和分页
排序
User.findAll({
order: [
['lastName', 'ASC'], // 按姓氏升序
['age', 'DESC'] // 按年龄降序
]
});
分页
// 获取第2页,每页10条记录
User.findAll({
offset: 10,
limit: 10
});
聚合函数
// 计算用户平均年龄
const avgAge = await User.average('age');
// 计算活跃用户的最小年龄
const minAge = await User.min('age', {
where: {
active: true
}
});
原生SQL查询
当Sequelize提供的功能不足时,可以使用原生SQL:
import { literal } from '@sequelize/core';
User.findAll({
where: literal('age > 30 AND created_at > NOW() - INTERVAL 1 YEAR')
});
最佳实践
- 始终使用事务:对于生产环境的重要操作,务必使用事务保证数据一致性
- 限制查询字段:只查询需要的字段,减少数据传输量
- 合理使用索引:为常用查询条件创建索引
- 批量操作优化:大量数据操作时使用批量方法
- 参数化查询:防止SQL注入攻击
总结
本教程详细介绍了Sequelize中最基础的CRUD操作,涵盖了从简单的插入查询到复杂的条件组合。掌握这些基础知识后,开发者可以高效地进行大多数常见的数据库操作。在实际项目中,应根据具体需求选择合适的查询方法,并注意性能优化和数据安全。
【免费下载链接】sequelize-docs-Zh-CN 项目地址: https://gitcode.com/gh_mirrors/se/sequelize-docs-Zh-CN
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



