引言
上文介绍了Sequelize的安装以及使用方法 接下来将介绍Sequelize使用的具体实例,如果有小伙伴不清楚Sequelize的安装使用可以参考下面的一篇文章,OK话不多说咱们直接开始。
Sequelize:一个强大的 Node.js ORM-CSDN博客
实现登录/注册的功能
创建一个config文件夹 该文件夹下创建一个database.js文件 用来存储数据库信息
// 引⼊sequelize库
// Sequelize:类,DataTypes:数据类型,Op:运算符合辑
const { Sequelize, DataTypes, Op } = require("sequelize") // 引⼊sequelize
// 创建Sequelize实例
const sequelize = new Sequelize('zx', 'root', '123456', {
host: '127.0.0.1',
dialect: 'mysql',
port: 3306,
logging: (sql) => {
console.log(sql); // 将 SQL 查询⽇志打印到控制台
},
dialectOptions: {
logQueryParameters: true, // 显示实际参数值
},
timezone: '+08:00', // 设置为中国的时区(北京时间,UTC+8)
});
// 数据库提示信息
sequelize.authenticate()
.then(() => {
console.log('数据库连接成功', 'http://127.0.0.1:3000');
})
.catch((err) => {
console.log('数据库连接失败', err);
});
// 导出实例
module.exports = { sequelize, DataTypes, Op }
创建一个models 文件夹 该文件夹下创建一个userModel.js文件 用来对数据库表进行模型化
const { sequelize, DataTypes, Op } = require("../config/dbutils");
//将存储用户信息的表进行Sequelize模型化
const User = sequelize.define('zx_user', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false
},
username: {
type: DataTypes.STRING(20),
allowNull: false
},
password: {
type: DataTypes.STRING(20),
allowNull: false
},
tel: {
type: DataTypes.STRING(11),
allowNull: false
}
}, {
tableName: 'zx_user',
timestamps: false
});
//登录功能
function getLogin(tel, password, callback) {
User.findOne({ where: { tel: tel, password: password } }).then(user => {
if (user) {
const result = [user]
callback(result)
} else {
callback(new Error('无效的用户名或密码'));
}
}).catch(err => {
console.log(err);
});
};
//注册功能
function addUser(username, password, tel, callback) {
User.findOne({ where: { tel: tel } }).then(user => {
if (user) {
callback(2);
} else {
User.create({ username: username, password: password, tel: tel }).then(() => {
callback(1);
}).catch(err => callback(-1));
}
}).catch(err => callback(err));
};
module.exports = {
getLogin: getLogin,
addUser: addUser,
};
module.exports = User;
在路由文件中引用实例
const userDao = require("../models/userModel")