Install MySQL2
npm i mysql2
Create Connection Pool ( config/database.js)
const mysql = require("mysql2/promise");
const pool = mysql.createPool({
host: "localhost",
port: 3306,
user: "root",
password: "root",
database: "training_db",
connectionLimit: 10
});
module.exports = pool;
Create DAO (dao/user.dao.js)
const pool = require('../config/database')
class UserDAO {
async findAll(){
const result = await pool.query("select * from users");
return result[0];
}
async save(user){
let params = [ user.name, user.email, user.password, user.role];
const result = await pool.query("insert into users (name,email,password,role) values ( ?,?,?,?)", params);
return result[0].insertId;
}
}
exports.UserDAO = UserDAO;
Test with express -routes (app.js)
npm i express@next
npm i nodemon
const express = require('express')
const app = express()
const port = 3000
app.use(express.json())
const {UserDAO} = require('./dao/user.dao');
const userDAO = new UserDAO();
app.get('/api/users', async (req,res,next)=>{
let result = await userDAO.findAll();
res.status(200).json(result);
});
app.post('/api/users', async (req,res)=>{
let user = req.body;
let result = await userDAO.save(user);
res.status(201).json({id:result});
});
app.use(function (err, req, res, next) {
console.log("common error handler")
console.error(err);
res.json({errorMessage:err.message});
})
app.listen(port, () => console.log(`Demo app listening on port port!`))
Testing
nodemon app.js