使用Sequelize进行对数据的增删查改

138 阅读1分钟
  1. 初始化项目 npm install express --save // 初始化express项目 npm install --save sequelize // 安装sequelize

  2. 引用Sequelize

  • 连接数据库 新建一个model文件夹,文件下创建一个db.js文件

    const Sequelize = require('sequelize')
    // 创建连接
    const sequelize = new Sequelize(
     'user', // 数据库名
     'root',// 用户名
     '123456', // 密码
     {
     host: 'localhost',
    dialect: 'mysql',
    // 格式化时间
    dialectOptions: { 
    dateStrings: true,
    typeCast: true
     },
    timezone: '+08:00' //改为标准时区
    },
    )
    
    module.exports = sequelize
    
  • 创建模型

model文件夹下创建一个user.js文件

 const {Sequelize, DataTypes} = require('sequelize')
const sequelize = require('./db')

const User = sequelize.define(
'Users', // 别名
 {
// 定义模型属性
// 需要根据数据库的结构定义
user_id: {
  type: DataTypes.INTEGER,
  primaryKey: true,
  autoIncrement: true,
  allowNull: false
},
user_name: {
  type: DataTypes.STRING,
  allowNull: false
},
user_account: {
  type: DataTypes.STRING,
  allowNull: false
},
user_password: {
  type: DataTypes.STRING,
  allowNull: false
},
createdAt: {
  type: DataTypes.DATE,
  allowNull: false
},
updatedAt: {
  type: DataTypes.DATE,
  allowNull: false
},
}, {
tableName: 'users',// 表名
freezeTableName: true // 表名后面是否不需要以s结尾
 });

module.exports = User

5. 查:

         var express = require('express');
    var router = express.Router();
   const User = require('../model/user')

    /* GET users listing. */
   router.get('/', function (req, res, next) {
   const {user_name} = req.query
   const where = {}
   if (user_name) {
    where.user_name = user_name
   }
   User.findAll({
    where
   }).then(data => {
   res.render('user.html', {
   users: data
    })
   })
   });
   module.exports = router;

5. 增:

   router.post('/create', function(req, res) {
   const user = req.body
   // user.created_at = new Date().toLocaleString()
   console.log(user);
   User.create(user).then(data => {
   res.redirect('/users')
   })
   })

7. 改:

   // 用于获取所需要修改信息的用户
   router.get('/edit', function (req, res) {
   const user_id = req.query.user_id
   User.findByPk(user_id).then(data => {
   res.render('user-update.html', {
    user: data
   })
   })
   })
   // 用于接收提交的修改数据并修改
   router.post('/edit', function (req, res) {
   const user = req.body
   User.update(user, {
    where: {
    user_id: user.user_id
    }
   } ).then(data => {
   console.log(data);
   res.redirect('/users')
   })
   })

9. 删:

   // 这次使用了async await进行异步等待操作,无需每次都在数据库查询操作中使用.then
    router.get('/delete', async function (req, res) {
   const user_id = req.query.user_id
   console.log(user_id);
   await User.destroy({
   where: {
    user_id: user_id
    }
   })
   res.redirect('/users')
   })