怎么建造网站,昆明 网站设计,贵阳建设工程招聘信息网站,自己网站便捷性介绍
支持多种数据库#xff0c;包括 PostgreSQL、MySQL、MariaDB、SQLite 和 Microsoft SQL Server。Sequelize 提供了丰富的功能#xff0c;帮助开发者用 JavaScript#xff08;或 TypeScript#xff09;代码操作数据库#xff0c;而无需直接书写 SQL 语句。
Se…便捷性介绍
支持多种数据库包括 PostgreSQL、MySQL、MariaDB、SQLite 和 Microsoft SQL Server。Sequelize 提供了丰富的功能帮助开发者用 JavaScript或 TypeScript代码操作数据库而无需直接书写 SQL 语句。
Sequelize 的主要特点
跨数据库支持支持主流数据库如 MySQL、PostgreSQL、SQLite 等。 模型Model定义通过定义模型类似于类对应数据库的表。 迁移Migrations工具方便管理数据库的版本变化。 事务支持提供事务操作确保数据一致性。 查询生成器支持链式查询和条件查询生成高效的 SQL 语句。 钩子Hooks支持生命周期钩子方便在特定操作前后执行代码。
基本使用介绍
安装 Sequelize 和数据库驱动
npm install sequelize
npm install mysql2 # 对于 MySQL创建实例
const { Sequelize } require(sequelize);// 创建与数据库的连接实例
const sequelize new Sequelize(database_name, username, password, {host: localhost,dialect: mysql, // 数据库类型可更换为 postgres, sqlite, mssql 等logging: false, // 是否打印 SQL 日志
});
同步模型到数据库
将模型与数据库表同步
(async () {try {await sequelize.authenticate(); // 验证连接是否成功console.log(连接建立成功);await sequelize.sync({ force: true }); // 同步模型force: true 表示重建表console.log(所有异步模型成功.);} catch (error) {console.error(不能连接到数据库, error);} finally {await sequelize.close(); // 关闭数据库连接}
})();
定义模型:相当于是在建数据表
模型是 Sequelize 的核心用来描述数据库的表结构
const { DataTypes } require(sequelize);const User sequelize.define(User, {id: {type: DataTypes.INTEGER,autoIncrement: true,primaryKey: true,},username: {type: DataTypes.STRING,allowNull: false,},email: {type: DataTypes.STRING,unique: true,},password: {type: DataTypes.STRING,},
}, {tableName: users, // 指定表名timestamps: true, // 是否自动生成 createdAt 和 updatedAt 字段
});
数据操作增删改查
//创建数据
const newUser await User.create({username: JohnDoe,email: johndoeexample.com,password: 123456,
});
console.log(newUser.toJSON());// 查询所有用户
const users await User.findAll();
console.log(users);// 按条件查询
const specificUser await User.findOne({ where: { username: JohnDoe } });
console.log(specificUser);//更新数据
await User.update({ email: newemailexample.com }, {where: { username: JohnDoe },
});//删除数据
await User.destroy({where: { username: JohnDoe },
});
其他基本数据库操作
关联Associations
Sequelize 支持表之间的关系一对一 (1:1)、一对多 (1:N)、多对多 (N:M)。
const Post sequelize.define(Post, { title: DataTypes.STRING });
User.hasMany(Post); // 一个用户有多个帖子
Post.belongsTo(User); // 一个帖子属于一个用户事务Transactions
const t await sequelize.transaction();try {const user await User.create({ username: Jane }, { transaction: t });await t.commit(); // 提交事务
} catch (error) {await t.rollback(); // 回滚事务
}生命周期钩子Hooks
User.beforeCreate((user, options) {console.log(Before creating user:, user.username);
});原生查询
如果需要执行原生 SQL可以使用 sequelize.query。
const [results, metadata] await sequelize.query(SELECT * FROM users);具体项目案例
现在要实现一个用户认证模块以node为后端数据库是确定的但是不在数据库当中建任何表全依靠Sequelize进行
src/config/db.js后端数据库连接
const { Sequelize } require(sequelize)// 使用 Sequelize 连接 MySQL
// 这里配置数据库名称、用户名、密码、主机和方言
const sequelize new Sequelize(project, root, 123456, {host: localhost,dialect: mysql,
})/*** 连接数据库的异步函数* 尝试验证与数据库的连接如果成功则打印确认消息* 如果连接失败则打印错误消息并退出进程*/
const connectDB async () {try {await sequelize.authenticate()console.log(MySQL Connected)} catch (err) {console.error(Unable to connect to the database:, err.message)process.exit(1)}
}// 导出 sequelize 实例和 connectDB 函数供外部使用
module.exports { sequelize, connectDB }src/modules/User.js用户模型-用户数据表定义建立
const { Sequelize, DataTypes } require(sequelize)
const bcrypt require(bcrypt)
const { sequelize } require(../config/db)// 定义 User 模型
const User sequelize.define(User, {username: {type: DataTypes.STRING,allowNull: false,unique: true,},password: {type: DataTypes.STRING,allowNull: false,},
})// 在保存用户之前加密密码
User.beforeCreate(async (user) {user.password await bcrypt.hash(user.password, 10)
})module.exports User
src/app.js程序入口
//dotenv 是一个用于 加载环境变量 的 Node.js 模块它会从项目根目录的 .env 文件中读取环境变量并将其添加到 process.env 对象中
//开发者就可以通过 process.env.变量名 来访问环境变量。
require(dotenv).config()
const express require(express)
//---------------------数据库部分-------------------------------------------------------------------------------
const { connectDB, sequelize } require(./config/db)
const app express()// 初始化数据库连接
connectDB()// 同步数据库表结构sequelize.sync 会同步模型与数据库表。alter: true 会根据模型的定义修改数据库表结构谨慎使用于生产环境。
sequelize.sync({ alter: true }).then(() {console.log(数据库和表结构已经同步成功)
})
//---------------------------------------------------------------------------------------------------------------
//express.json() 是一个中间件用于解析 JSON 格式的请求体。
app.use(express.json())//通过 process.env.PORT 读取 .env 文件中配置的端口号如果未定义则默认使用 5000
const PORT process.env.PORT || 5000
app.listen(PORT, () console.log(Server running on port ${PORT}))// app.use(/api/auth, authRoutes)当访问 /api/auth 路径时将由 authRoutes 处理请求。
// 这是模块化路由的常见实现方式。
const authRoutes require(./routes/authRoutes)app.use(/api/auth, authRoutes)
其他一些可能用得上的功能
支持原始 SQL 查询
const results await sequelize.query(SELECT * FROM Users WHERE username :username, {replacements: { username: JohnDoe },type: QueryTypes.SELECT,
});
高级查询
条件查询
const users await User.findAll({where: {username: {[Op.like]: J%,},},
});
分页与排序
const users await User.findAll({ limit: 10, offset: 20, order: [[username, ASC]] });还有数据迁移和数据库连接池此处就不讲了 此处提供 官方文档: https://sequelize.org/ GitHub 仓库: https://github.com/sequelize/sequelize Sequelize 是一个功能全面的 ORM 工具它简化了数据库操作支持多种数据库类型。通过模型定义、查询构建、事务管理和数据库迁移开发者可以高效地处理复杂的数据管理需求。如果你的项目需要频繁的数据库操作或希望避免直接使用 SQLSequelize 是一个值得选择的解决方案。 文章转载自: http://www.morning.llqky.cn.gov.cn.llqky.cn http://www.morning.kmldm.cn.gov.cn.kmldm.cn http://www.morning.mhnd.cn.gov.cn.mhnd.cn http://www.morning.kgqww.cn.gov.cn.kgqww.cn http://www.morning.kfcz.cn.gov.cn.kfcz.cn http://www.morning.ldynr.cn.gov.cn.ldynr.cn http://www.morning.pwwdp.cn.gov.cn.pwwdp.cn http://www.morning.knjj.cn.gov.cn.knjj.cn http://www.morning.hqwxm.cn.gov.cn.hqwxm.cn http://www.morning.tbhlc.cn.gov.cn.tbhlc.cn http://www.morning.rrdch.cn.gov.cn.rrdch.cn http://www.morning.jcpq.cn.gov.cn.jcpq.cn http://www.morning.fgkrh.cn.gov.cn.fgkrh.cn http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn http://www.morning.wtyqs.cn.gov.cn.wtyqs.cn http://www.morning.jtszm.cn.gov.cn.jtszm.cn http://www.morning.krkwp.cn.gov.cn.krkwp.cn http://www.morning.hsjrk.cn.gov.cn.hsjrk.cn http://www.morning.nqxdg.cn.gov.cn.nqxdg.cn http://www.morning.ktrh.cn.gov.cn.ktrh.cn http://www.morning.hdqqr.cn.gov.cn.hdqqr.cn http://www.morning.xtxp.cn.gov.cn.xtxp.cn http://www.morning.mbfkt.cn.gov.cn.mbfkt.cn http://www.morning.sbdqy.cn.gov.cn.sbdqy.cn http://www.morning.gpmrj.cn.gov.cn.gpmrj.cn http://www.morning.tbqdm.cn.gov.cn.tbqdm.cn http://www.morning.qtbnm.cn.gov.cn.qtbnm.cn http://www.morning.ldcrh.cn.gov.cn.ldcrh.cn http://www.morning.kttbx.cn.gov.cn.kttbx.cn http://www.morning.mhwtq.cn.gov.cn.mhwtq.cn http://www.morning.mrqwy.cn.gov.cn.mrqwy.cn http://www.morning.kpgms.cn.gov.cn.kpgms.cn http://www.morning.hbqfh.cn.gov.cn.hbqfh.cn http://www.morning.rnfn.cn.gov.cn.rnfn.cn http://www.morning.kgjyy.cn.gov.cn.kgjyy.cn http://www.morning.prhqn.cn.gov.cn.prhqn.cn http://www.morning.lmdfj.cn.gov.cn.lmdfj.cn http://www.morning.cwskn.cn.gov.cn.cwskn.cn http://www.morning.dddcfr.cn.gov.cn.dddcfr.cn http://www.morning.tkzqw.cn.gov.cn.tkzqw.cn http://www.morning.kgnrh.cn.gov.cn.kgnrh.cn http://www.morning.gsjw.cn.gov.cn.gsjw.cn http://www.morning.wrdpj.cn.gov.cn.wrdpj.cn http://www.morning.zgpgl.cn.gov.cn.zgpgl.cn http://www.morning.mpwgs.cn.gov.cn.mpwgs.cn http://www.morning.dsxgc.cn.gov.cn.dsxgc.cn http://www.morning.frsxt.cn.gov.cn.frsxt.cn http://www.morning.rkdw.cn.gov.cn.rkdw.cn http://www.morning.xbdd.cn.gov.cn.xbdd.cn http://www.morning.tdcql.cn.gov.cn.tdcql.cn http://www.morning.ltffk.cn.gov.cn.ltffk.cn http://www.morning.dnydy.cn.gov.cn.dnydy.cn http://www.morning.srkqs.cn.gov.cn.srkqs.cn http://www.morning.ksgjy.cn.gov.cn.ksgjy.cn http://www.morning.xcfmh.cn.gov.cn.xcfmh.cn http://www.morning.rgxcd.cn.gov.cn.rgxcd.cn http://www.morning.nmlpp.cn.gov.cn.nmlpp.cn http://www.morning.xqjz.cn.gov.cn.xqjz.cn http://www.morning.ycwym.cn.gov.cn.ycwym.cn http://www.morning.nnrqg.cn.gov.cn.nnrqg.cn http://www.morning.lznfl.cn.gov.cn.lznfl.cn http://www.morning.rntyn.cn.gov.cn.rntyn.cn http://www.morning.rqjfm.cn.gov.cn.rqjfm.cn http://www.morning.ndfwh.cn.gov.cn.ndfwh.cn http://www.morning.hpspr.com.gov.cn.hpspr.com http://www.morning.xkzmz.cn.gov.cn.xkzmz.cn http://www.morning.ylpwc.cn.gov.cn.ylpwc.cn http://www.morning.xbyyd.cn.gov.cn.xbyyd.cn http://www.morning.rjbb.cn.gov.cn.rjbb.cn http://www.morning.wtdhm.cn.gov.cn.wtdhm.cn http://www.morning.pxlql.cn.gov.cn.pxlql.cn http://www.morning.qkdjq.cn.gov.cn.qkdjq.cn http://www.morning.wjlnz.cn.gov.cn.wjlnz.cn http://www.morning.llsrg.cn.gov.cn.llsrg.cn http://www.morning.txlnd.cn.gov.cn.txlnd.cn http://www.morning.jbtwq.cn.gov.cn.jbtwq.cn http://www.morning.kgqww.cn.gov.cn.kgqww.cn http://www.morning.hjsrl.cn.gov.cn.hjsrl.cn http://www.morning.kmqwp.cn.gov.cn.kmqwp.cn http://www.morning.rwjh.cn.gov.cn.rwjh.cn