[TOC]
This project is a crud of products whit next.js, tailwindcss and mysql
npm install
npm run dev
Open http://localhost:3000 with your browser to see the result.
npx create-next-app crud-mysql
npm i mysql2 axios
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
*tailwind.config.js *
module.exports = {
content: [
"./pages/**/*.{js,ts,jsx,tsx}",
"./components/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}
*globals.css *
@tailwind base;
@tailwind components;
@tailwind utilities;
Create directories for products in pages/products and pages/api/products
pages/
api/products/index.js
api/products/[id].js
products/index.js
api/products/[id].js
export default(req,res)=>{
return res.status(200).json('getting a product ' + req.query.id)
}
api/products/index.js
export default(req,res)=>{
return res.status(200).json('getting a products')
}
CREATE DATABASE productsnextjs;
use productsnextjs;
CREATE TABLE product (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description VARCHAR(500) NOT NULL,
price DECIMAL,
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
describe product;
in config/db.js
import { createPool } from 'mysql2/promise'
const pool = createPool({
host:'localhost',
user:'root',
password:'',
port:3306,
database: 'productsnextjs'
});
export { pool };
in pages/api/hello.js
import { pool } from '../../config/db';
export default async function handler(req,res){
const [rows] = await pool.query('SELECT NOW()');
return res.status(200).json(rows[0]['NOW()'])
}
in pages/api/products/index.js in switch
case "POST":
return await saveProduct(req,res)
in function
const saveProduct = async(req,res)=>{
const { name, price, description } = req.body;
const [result] = await pool.query("INSERT INTO product SET ?",{
name,price,description
})
return res.status(200).json({name,price,description, id: result.insertId})
}
in pages/api/products/index.js in switch
case "GET":
return await getProducts(req,res)
in function
const [result] = await pool.query("SELECT * FROM product");
return res.status(200).json(result)