sequelize是款針對nodejs的ORM框架(Object Relational Mapping Library),支持多個資料庫(PostgreSQL、 MySQL、MariaDB、 SQLite 和 MSSQL)
ORM是對SQL語法的封裝,可以讓SQL語法統一支持其他資料庫語法
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'})
建立sequelize連線
// app.js
// 引入sequelize
const sequelize = require('./util/database')
// 建立sequelize連線
sequelize.authenticate()
.then(res => {
console.log('數據連結成功', res)
}).catch(err => {
console.log('連結失敗', err)
})
定義數據模型 (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