适合前端学的操作sql框架---sequelize

1,083 阅读1分钟

sequelize是一个node web开发ORM的框架,【ORM: 对象关系映射,它是一种设计体系,用于实现面向对象编程语言里不同类型系统的数据之间的转换】,ORM技术是在对象和数据之间提供了一条桥梁,前台的对象型数据和数据库中的关系型数据通过这个相互转化。


本次使用mysql做练习


1、下载安装

npm install --save sequelize
npm install --save mysql2

2、测试建立连接

const Sequelize = require('sequelize');
const conf = {
  host: 'localhost',
  dialect: 'mysql'
}

const seq = new Sequelize('test_db', 'root', '12345', conf)


seq.authenticate().then(() => {
 console.log('ok')
}).catch(() => {
 console.log('err')
})

注:对于test_db数据库的使用,可以用mysql workbench


3、关闭连接sequelize.close()


4、初始化,创建连接对象并模块化

新建sequelize.js文件

const Sequelize = require('sequelize');
const conf = {
  host: 'localhost',
  dialect: 'mysql'
}

const seq = new Sequelize('test_db', 'root', '12345', conf)

module.exports = seq

5、定义数据表结构,将表结构写进代码里

新建一个model.js

const Sequelize = require('sequelize');
const seq = require('./sequelize');

const User = seq.define('user', {
  userName: {
    type: Sequelize.STRING,
    allowNull: false
  },
  password: {
    type: Sequelize.STRING,
    allowNull: false
  },
  nickname: {
    type: Sequelize.STRING,
    comment: '昵称'
  }
})

module.exports = {
    User
}

以上代码,直接引入之前初始化创建的sequelize对象,然后使用define方法定义数据表结构,其他数据也可以通过此方式定义。

6、同步数据表结构sync.js

const seq = require('./sequelize');
require('./model')

seq.sync({force: true}).then(() => {
  process.exit()
})

创建完毕,执行node src/sync.js就可以同步数据表结构了


7、创建初始数据

const {User} = require('./model')
!(async function () {
    const kaka = await User.create({
    userName: 'kaka',
    password: '123',
    nickName: '卡卡'
  })
  console.log('kaka', kaka.dataValues)
})()

8、CRUD

const kaka = await User.findOne({ // 查询特定列
  attributes: ['userName', 'nickName'],
  where: {
    userName: 'kaka'
  }
})

const kakaList = await Blog.findAll({ // 查询一个列表并排序
  where: {
    userId: 2
  },
  order: [
    ['id', 'desc']
  ]
})

const delUserRes = await User.destroy({ // 删除
    where: {
      id: 2
    }
 })
 
 const updateRes = await User.update({ // 改
    nickname: '卡卡西'
  }, {
    where: {
      userName: 'kaka'
    }
  })

暂告一段落,先入门学习了解一下,精彩内容待续。。。