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)
});
};