For this example we'll use MySql :

npm install --save mysql2

En général on met la logique de connexion a notre db dans le dossier util/ database.js

const mysql = require("mysql2");
const pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    database: 'node_complete',
    password: '',
		port: '3308'
});

module.exports = pool.promise();

On va pouvoir modifier la logique de nos models :

const db = require('../util/database');

  static fetchAll() {
    return db.execute('SELECT * FROM products');
  }

Pour l'utliliser :

exports.getProducts = (req, res, next) => {
  Product.fetchAll()
// use destruturing to get the data
    .then(([rows, fieldData]) => {
      res.render('shop/product-list', {
// je passe tout simplement les rows de ma database 
        prods: rows,
        pageTitle: 'All Products',
        path: '/products'
      });
    })
    .catch(err => console.log(err));
};

Et notre methode save pour enregistrer des book dans la base ?

save(title, imageUrl, price, description) {
    return db.execute("INSERT INTO products (title, imageUrl, price, description) VALUES (?, ?, ?, ?)", [
      this.title,
      this.imageUrl,
      this.price,
      this.description
    ])
  }
// et admin.js
exports.postAddProduct = (req, res, next) => {
  const title = req.body.title;
  const imageUrl = req.body.imageUrl;
  const price = req.body.price;
  const description = req.body.description;
  const product = new Product(null, title, imageUrl, description, price);
  product.save().then(() => {
    res.redirect('/');
  }).catch((err) => {
    console.log(err)
  });
};