Pic Credit Joseph Hu | Medium
 
  1. Connecting NodeJS Application with MySQL DB
  2. Creating Models
  3. Building relationships between models(tables)
  4. Adding dummy Data
  5. Fetching data
npm install mysql2 sequelize  --save
app.js
db
-index.js
models
- index.js
- user.model.js
- order.model.js
package.json
  1. Connecting NodeJS Application with MySQL DB
const sequelize = require('sequelize');

const Sequelize = new sequelize.Sequelize(
"<DB Name>",
"<DB User>",
"<DB Password>",
{
host: '<DB Host>',
dialect: "mysql"
});

module.exports = Sequelize;
const sequelize = require('../db');
const Sequelize = require('sequelize');

const User = sequelize.define('user', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: {
type: Sequelize.STRING
}
});

module.exports = User;
const sequelize = require('../db');
const Sequelize = require('sequelize');

const Order = sequelize.define('order', {
order_id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
subtotal: {
type: Sequelize.INTEGER
}
});

module.exports = Order;
const sequelize = require('../db');
const Sequelize = require('sequelize');

const User = require('../models/user.model');
const Order = require('../models/order.model');

User.hasMany(Order);

sequelize
.sync({ force: true })
.then(conn => {
return User.create({name: "Ajay"})
})
.then(user => {
return Promise.all([
Order.create({subtotal: 500, userId: user.id}),
Order.create({subtotal: 600, userId: user.id}),
Order.create({subtotal: 700, userId: user.id})
])
})
.then(order => {
return User.findAll();
})
.then(users => {
console.log(users)
})
.catch(err => {
console.log(err.toString())
})
const express = require('express');
const db = require('./models');

const app = express();


app.listen(process.env.PORT || 3000, function () {
console.log('app is listing to port 3000')
})
{
"name": "nodejs-sequelize",
"version": "1.0.0",
"dependencies": {
"express": "^4.17.3",
"sequelize": "latest",
"mysql2": "latest"
}
}
npm install && node app.js

mysql> show tables;
+--------------------------+
| Tables_in_test_sequelize |
+--------------------------+
| orders |
| users |
+--------------------------+
2 rows in set (0.00 sec)