连接数据库
Sequelize的连接需要传入参数,并且可以配置开启线程池、读写分库等操作。
简单的写法是这样的:new Sequelize("表名","用户名","密码",配置)
正常使用中很少使用到所有的参数,这里提供一个常用的模板,只需要修改自己使用的值即可。
const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', //数据库地址,默认本机 port:'3306', dialect: 'mysql', pool: { //连接池设置 max: 5, //最大连接数 min: 0, //最小连接数 idle: 10000 }, });
下面是详细的配置参数。
const Sequelize = require('sequelize'); const { databases } = require('./dbConfig') const sequelize = new Sequelize(databases.adName, databases.user, databases.password, { dialect: 'mysql', host: databases.host, port: databases.port, logging: true, timezone: '+8:00', define: { //false代表去除默认的createAt updateAt deleteAt字段 timestamps: true, // 同时需要设置paranoid为true(此种模式下,删除数据时不会进行物理删除,而是设置deletedAt为当前时间 paranoid: true, underscored: true, createdAt: 'created_at', updatedAt: 'updated_at', deletedAt: 'deleted_at', underscored: true, } }); // // 注意:如果表已经存在,使用`force:true`将删除该表 sequelize.sync({ force: true, }); module.exports = { sequelize }
定义模型对象
在使用之前一定要先创建模型对象。就是数据库中表的名称、使用到的字段、字段类型等。
这里有一个推荐的开发方式。先在nodejs中将对象创建出来,然后调用Sequelize的同步方法,将数据库自动创建出来。这样就避免了既要写代码建表,又要手工创建数据库中的表的操作。只需要单独考虑代码中的对象类型等属性就好了。
如果数据库中已经建好了表,并且不能删除,这个时候就不能自动创建了,因为创建的时候会删除掉旧的数据。
下面是简单的对象创建多数情况下这样就可以了。
const { Sequelize, Model } = require('Sequelize'); const { sequelize } = require('../config/connectMsql') const bcryptjs = require('bcryptjs') const slat = bcryptjs.genSaltSync(10); //继承Model用来验证用户提交的数据 class User extends Model { static async verifyEmailPassword(email, password) { const user = await User.findOne({ where: { email, } }) if (!user) { return { code: 404, message: '用户不存在' } } //查询到就对比密码 const corrent = bcryptjs.compareSync(password, user.password); console.log(corrent) if (!corrent) { return { code: 404, message: '密码不正确' } } return user; } } //定义数据库字段的类型 User.init({ id: { type: Sequelize.INTEGER, primaryKey: true,//设置主键 autoIncrement: true,//自增长 }, nickname: Sequelize.STRING, email: { type: Sequelize.STRING, unique: true, }, password: { type: Sequelize.STRING, //对数据进行二次加工 set(pwd) { const pwds = bcryptjs.hashSync(pwd, slat) console.log(pwds) this.setDataValue('password', pwds) }, }, openid: { type: Sequelize.STRING(64), unique: true,//唯一值 }, }, { //链接数据库 sequelize, tableName: 'user' // 重命名 }) module.exports = { User };
调用User中的方法:
const user = await User.verifyEmailPassword(account, secret)
文档参考 https://github.com/demopark/sequelize-docs-Zh-CN/tree/master
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接