介紹

sequelize是款針對nodejs的ORM框架(Object Relational Mapping Library),支持多個資料庫(PostgreSQL、 MySQL、MariaDB、 SQLite 和 MSSQL)

ORM是對SQL語法的封裝,可以讓SQL語法統一支持其他資料庫語法

安裝

github

npm install sequelize --save

引入sequelize實例(new Sequelize),可以看見需要帶入三個參數('表單名, '資料庫名稱', '資料庫密碼')

// util/database.js
const { Sequelize } = require('sequelize')

const sequelize = new Sequelize('nodejs-shop', 'root', 'password', {dialect: 'mysql', host: 'localhost'})

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9429a7e2-b782-4164-bca0-746286619951/Untitled.png

建立sequelize連線

// app.js
// 引入sequelize
const sequelize = require('./util/database')

// 建立sequelize連線
sequelize.authenticate()
.then(res => {
  console.log('數據連結成功', res)
}).catch(err => {
  console.log('連結失敗', err)
})

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/60044111-ec87-4c81-a275-faaa4a145b37/Untitled.png

定義數據模型 (sequelize定義文件)

sequelize.define('model name')

// models/product.js
const { Sequelize } = require('sequelize')

const sequelize = require('../util/dataBase')

const Product = sequelize.define('Product', {
  id: {
    type: Sequelize.INTEGER,
    autoIncrement: true,
    allowNull: false,
    primaryKey: true,
  },
  title: Sequelize.STRING,
  price: { type: Sequelize.DOUBLE, allowNull: false },
  imgUrl: { type: Sequelize.STRING, allowNull: false },
  description: { type: Sequelize.TEXT, allowNull: false },
})

module.exports = Product

.sync()調用同步方法 取代.authenticate()

// app.js
// 建立sequelize連線
// 引入sequelize
const sequelize = require('./util/dataBase')

sequelize.sync()
.then(result => {
  console.log(result)
})
.catch(err => {
  console.log(err)
})

完成後可以發現資料庫被建立新的Table

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/fbc5da08-6b86-45db-bf34-b0ae7d4c026e/Untitled.png