Tutorial CRUD Usando Node JS, Express, React JS y MySQL (Full-Stack)
Tutorial CRUD Usando Node JS, Express, React JS y MySQL (Full-Stack)
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
En este tutorial, aprenderá cómo crear una aplicación CRUD de pila completa utilizando node.js, express, MySQL y
React JS.
No solo eso,
En este tutorial, también aprenderá a usar Bulma CSS para diseñar la interfaz.
Por lo tanto, la aplicación que se crea se vuelve más fácil de usar con una interfaz de usuario (UI) elegante y receptiva.
Si es un novato en node.js express, le sugiero que primero aprenda el " Tutorial de Express Js para principiantes
(https://m�kri.com/en/blog/express-tutorial-beginners) ".
Y si eres nuevo en React JS, te sugiero que primero aprendas el " Tutorial de React Js para principiantes
(https://m�kri.com/en/blog/reactjs-beginners) ".
Empecemos.
Tutorial LENGKAP CRUD dengan Node JS, Express, React JS, dan MySQL (Full Stack)
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
Luego abra la carpeta " fullstack " usando el editor de código, aquí uso Visual Studio Code .
Puede descargar Visual Studio Code en el siguiente enlace y luego instalarlo en su computadora:
https://code.visualstudio.com/ (https://code.visualstudio.com/)
Después de abrir la carpeta " fullstack " con Visual Studio Code, cree una subcarpeta llamada " backend " dentro de la
A continuación, abra una terminal en Visual Studio Code en la barra de menú terminal => nueva terminal.
Luego, ve a la carpeta “ backend ” escribiendo el siguiente comando en la terminal:
1
cd backend
Después de eso, escriba el siguiente comando en la terminal para crear un " paquete.json ": archivo
1
npm init -y
A continuación, instale express , mysql2 , sequelize y cors escribiendo el siguiente comando en la terminal:
1
npm install express mysql2 sequelize cors
A continuación, instale nodemon como una dependencia de desarrollo escribiendo el siguiente comando en la
https://www.facebook.com
terminal:
/sharer.php?u=https
https://twitter.com
%3A%2F 1
/home?status=CRUD%20Tutorial%20using%20Node%20JS
npm install --save-dev nodemon
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
A continuación, agregue el siguiente código al " paquete.json
%2C%20and%20MySQL%20(Full- ": archivo
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F 1
%2C%20Express "type": "module",
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
Entonces, el archivo " paquete.json " se parece a lo siguiente:
1
2 {
3 "name": "backend",
4 "version": "1.0.0",
5 "description": "",
6 "type": "module",
7 "main": "index.js",
8 "scripts": {
9 "test": "echo "Error: no test specified" && exit 1"
10 },
11 "keywords": [],
12 "author": "",
13 "license": "ISC",
14 "dependencies": {
15 "cors": "^2.8.5",
16 "express": "^4.17.1",
17 "mysql2": "^2.3.0",
18 "sequelize": "^6.6.5"
19 },
20 "devDependencies": {
21 "nodemon": "^2.0.12"
22 }
}
Esto es para que podamos usar la sintaxis del módulo ES6 para exportar e importar módulos.
Para poder usar MySQL, debe instalar XAMPP, WAMP, MAMP o un software similar.
Luego cree una nueva base de datos en MySQL, puede usar herramientas como SQLyog, PHPMyAdmin o herramientas
similares.
Aquí creo una base de datos con el nombre " mern_db ".
Si crea una base de datos con el mismo nombre, eso es aún mejor.
Para crear una base de datos en MySQL, se puede hacer ejecutando la siguiente consulta:
1
CREATE DATABASE mern_db;
El comando SQL anterior creará una base de datos con el nombre " mern_db ".
https://www.facebook.com
Aquí creo una tabla con el nombre " productos ".
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
Si crea una tabla con el mismo nombre, eso es aún mejor.
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Para crear una tabla de " productos ", se puede hacer ejecutando
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode- el siguiente comando SQL:
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
1
2 CREATE TABLE products(
%2C%20and%20MySQL%20(Full-
3 id INT(11) PRIMARY KEY AUTO_INCREMENT,
4 title VARCHAR(200),
5 price DOUBLE,
6 createdAt DATE,
7 updatedAt DATE
)ENGINE=INNODB;
El comando SQL anterior creará una tabla llamada "productos" con campos: id , título , precio , createdAt y updatedAt .
Para que la aplicación esté más estructurada, aplicaremos el patrón MVC (Model-View-Controllers).
Cree las carpetas " con�g ", " controllers ", " models " y " routes " en la carpeta " backend ".
Luego cree un " base archivo de datos.js" en la carpeta " con�g ", cree un archivo " Productos.js " en la carpeta "
controladores ", cree un archivo " productModel.js " en la carpeta " modelos ", cree un " índice .js ” en la carpeta “ routes
”, y cree el archivo “ index.js ” en la carpeta “ backend ”.
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
Abra el base archivo " de datos.js" en la carpeta " con�g ", luego escriba el siguiente código:
1
2 import { Sequelize } from "sequelize";
3
4 const db = new Sequelize('mern_db', 'root', '', {
5 host: "localhost",
6 dialect: "mysql"
7 });
8
export default db;
#5. Modelos
Abra el archivo del modelo " productModel.js " que se encuentra en la carpeta " modelos ", luego escriba el siguiente
código:
1
2 import { Sequelize } from "sequelize";
3 import db from "../config/database.js";
4
5 const { DataTypes } = Sequelize;
6
7 const Product = db.define('products',{
8 title:{
9 type: DataTypes.STRING
10 },
11 price:{
12 type: DataTypes.DOUBLE
13 }
14 },{
15 freezeTableName: true
16 });
17
export default Product;
https://www.facebook.com
#6. Controladores
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
Abra el archivo del controlador " Productos.js
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
" que se encuentra en la carpeta " controladores ", luego escriba el
https://plus.google.com
%2C%20React%20JS
siguiente código:
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
1
2 import Product from "../models/productModel.js";
3
4 export const getAllProducts = async (req, res) => {
5 try {
6 const products = await Product.findAll();
7 res.json(products);
8 } catch (error) {
9 res.json({ message: error.message });
10 }
11 }
12
13 export const getProductById = async (req, res) => {
14 try {
15 const product = await Product.findAll({
16 where: {
17 id: req.params.id
18 }
19 });
20 res.json(product[0]);
21 } catch (error) {
22 res.json({ message: error.message });
23 }
}
https://www.facebook.com
24
25
26 export const createProduct = async (req, res) => {
/sharer.php?u=https
https://twitter.com try {
27
%3A%2F 28 await Product.create(req.body);
/home?status=CRUD%20Tutorial%20using%20Node%20JS
29 res.json({
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express "message": "Product Created"
https://plus.google.com
30
%2C%20React%20JS
31
/share?url=https });
32 } catch (error) {
%2C%20and%20MySQL%20(Full-
%3A%2F res.json({ message: error.message });
Stack)%20https33
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
34 }
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F 35 }
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
36
%2C%20React%20JS
37 export const updateProduct = async (req, res) => {
38 try {
%2C%20and%20MySQL%20(Full-
39 await Product.update(req.body, {
40 where: {
41 id: req.params.id
42 }
43 });
44 res.json({
45 "message": "Product Updated"
46 });
47 } catch (error) {
48 res.json({ message: error.message });
49 }
50 }
51
52 export const deleteProduct = async (req, res) => {
53 try {
54 await Product.destroy({
55 where: {
56 id: req.params.id
57 }
58 });
59 res.json({
60 "message": "Product Deleted"
61 });
62 } catch (error) {
63 res.json({ message: error.message });
64 }
}
#7. Rutas
Abra el archivo “ index.js ” ubicado en la carpeta “ routes ”, luego escriba el siguiente código:
1
2 import express from "express";
3
4 import {
5 getAllProducts,
6 createProduct,
7 getProductById,
8 updateProduct,
9 deleteProduct
10 } from "../controllers/Products.js";
11
12 const router = express.Router();
13
14 router.get('/', getAllProducts);
15 router.get('/:id', getProductById);
16 router.post('/', createProduct);
17 router.patch('/:id', updateProduct);
18 router.delete('/:id', deleteProduct);
19
export default router;
https://www.facebook.com
Para asegurarse de que la aplicación se ejecute correctamente, ejecútela escribiendo el siguiente comando en la
terminal:
1
nodemon index
Para asegurarse de que el backend funcione correctamente, puede usar POSTMAN (https://www.postman.com
/downloads/) o las extensiones de cliente REST en VS Code para realizar algunas pruebas.
#9. Interfaz
https://www.facebook.com
Para el front-end, usaré React JS.
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
Si no está familiarizado con React JS, le sugiero que primero aprenda el " Tutorial de React JS para principiantes
https://plus.google.com
%2C%20React%20JS
/share?url=https
%3A%2F (https://m�kri.com/en/blog/reactjs-beginners) ".
%2C%20and%20MySQL%20(Full-
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
Hay muchas maneras de crear un proyecto React. Sin embargo, la forma más fácil es " crear una aplicación de
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
reacción ".
Abra una nueva terminal y cree un nuevo proyecto de reacción escribiendo el siguiente comando en la terminal:
1
npx create-react-app frontend
Si la instalación está completa, habrá una carpeta " frontend " en la carpeta " fullstack ".
De modo que en la carpeta " fullstack " hay dos carpetas, a saber: " backend " y " frontend " como se muestra a
continuación:
La carpeta " backend " es la carpeta de la aplicación que se creó previamente con node.js express, mientras que la "
A continuación, vaya a la carpeta " frontend " escribiendo el siguiente comando en la terminal:
1
cd frontend
https://www.facebook.com
Después de eso, instala react-router-dom , axios y bulma escribiendo el siguiente comando en la terminal:
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
1
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express npm install react-router-dom axios bulma
https://plus.google.com
%2C%20React%20JS
/share?url=https
%3A%2F Una vez completada la instalación, y para asegurarse
%2C%20and%20MySQL%20(Full- de que todo vaya bien, escriba el siguiente comando para
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%3A%2F ejecutar el proyecto:
t=CRUD%20Tutorial%20using%20Node%20JS
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
1
%2C%20and%20MySQL%20(Full-
npm start
1
http://localhost:3000 (http://localhost:3000)
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
#10. Componentes
Cree una carpeta llamada " componentes " dentro de la carpeta " frontend/src ".
Luego, cree los archivos de componentes " ProductList.js ", " AddProduct.js " y " EditProduct.js " en la carpeta "
frontend/src/components ".
1
2 import { useState, useEffect } from 'react'
https://www.facebook.com
3 import axios from "axios";
4 import { Link } from "react-router-dom";
5
/sharer.php?u=https
https://twitter.com
6 const ProductList = () => {
%3A%2F 7 const [products, setProduct] = useState([]);
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
8
%2C%20Express
https://plus.google.com
9 useEffect(() => {
%2C%20React%20JS
10
/share?url=https getProducts();
}, []);
%2C%20and%20MySQL%20(Full-
11
%3A%2F
Stack)%20https12
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
13 const getProducts = async () => {
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
14 const response = await axios.get('http://localhost:5000/products (http://localhost:5000/products)');
%2C%20Express setProduct(response.data);
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
15
%2C%20React%20JS
16 }
17
%2C%20and%20MySQL%20(Full-
18 const deleteProduct = async (id) => {
19 await axios.delete(`http://localhost:5000/products/${id}`);
20 getProducts();
21 }
22
23 return (
24 <div>
25 <Link to="/add" className="button is-primary mt-2">Add New</Link>
26 <table className="table is-striped is-fullwidth">
27 <thead>
28 <tr>
29 <th>No</th>
30 <th>Title</th>
31 <th>Price</th>
32 <th>Actions</th>
33 </tr>
34 </thead>
35 <tbody>
36 { products.map((product, index) => (
37 <tr key={ product.id }>
38 <td>{ index + 1 }</td>
39 <td>{ product.title }</td>
40 <td>{ product.price }</td>
41 <td>
42 <Link to={`/edit/${product.id}`} className="button is-small is-info">Edit</Link>
43 <button onClick={ () => deleteProduct(product.id) } className="button is-small is-danger"
44 </td>
45 </tr>
46 )) }
47
48 </tbody>
49 </table>
50 </div>
51 )
52 }
53
export default ProductList
A continuación, abra el archivo " AddProduct.js ", luego escriba el siguiente código:
1
2 import { useState } from 'react'
3 import axios from "axios";
4 import { useHistory } from 'react-router-dom';
5
6 const AddProduct = () => {
7 const [title, setTitle] = useState('');
8 const [price, setPrice] = useState('');
9 const history = useHistory();
10
11 const saveProduct = async (e) => {
12 e.preventDefault();
13 await axios.post('http://localhost:5000/products (http://localhost:5000/products)',{
14 title: title,
15 price: price
16 });
17 history.push("/");
18 }
19
20 return (
21 <div>
22 <form onSubmit={ saveProduct }>
23 <div className="field">
<label className="label">Title</label>
https://www.facebook.com
24
25 <input
26 className="input"
/sharer.php?u=https
https://twitter.com type="text"
27
%3A%2F 28 placeholder="Title"
/home?status=CRUD%20Tutorial%20using%20Node%20JS
29 value={ title }
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express onChange={ (e) => setTitle(e.target.value) }
https://plus.google.com
30
%2C%20React%20JS
31
/share?url=https />
32 </div>
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https33
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
34 <div className="field">
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F 35 <label className="label">Price</label>
%2C%20Express <input
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
36
%2C%20React%20JS
37 className="input"
38 type="text"
%2C%20and%20MySQL%20(Full-
39 placeholder="Price"
40 value={ price }
41 onChange={ (e) => setPrice(e.target.value) }
42 />
43 </div>
44
45 <div className="field">
46 <button className="button is-primary">Save</button>
47 </div>
48 </form>
49 </div>
50 )
51 }
52
export default AddProduct
A continuación, abra el archivo " EditProduct.js ", luego escriba el siguiente código:
1
2 /* eslint-disable react-hooks/exhaustive-deps */
3 import { useState, useEffect } from 'react'
4 import axios from "axios";
5 import { useHistory, useParams } from 'react-router-dom';
6
7 const EditProduct = () => {
8 const [title, setTitle] = useState('');
9 const [price, setPrice] = useState('');
10 const history = useHistory();
11 const { id } = useParams();
12
13 const updateProduct = async (e) => {
14 e.preventDefault();
15 await axios.patch(`http://localhost:5000/products/${id}`,{
16 title: title,
17 price: price
18 });
19 history.push("/");
20 }
21
22 useEffect(() => {
23 getProductById();
}, []);
https://www.facebook.com
24
25
26 const getProductById = async () => {
/sharer.php?u=https
https://twitter.com const response = await axios.get(`http://localhost:5000/products/${id}`);
27
%3A%2F 28 setTitle(response.data.title);
/home?status=CRUD%20Tutorial%20using%20Node%20JS
29 setPrice(response.data.price);
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express }
https://plus.google.com
30
%2C%20React%20JS
31
/share?url=https
32 return (
%2C%20and%20MySQL%20(Full-
%3A%2F <div>
Stack)%20https33
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
34 <form onSubmit={ updateProduct }>
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F 35 <div className="field">
%2C%20Express <label className="label">Title</label>
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
36
%2C%20React%20JS
37 <input
38 className="input"
%2C%20and%20MySQL%20(Full-
39 type="text"
40 placeholder="Title"
41 value={ title }
42 onChange={ (e) => setTitle(e.target.value) }
43 />
44 </div>
45
46 <div className="field">
47 <label className="label">Price</label>
48 <input
49 className="input"
50 type="text"
51 placeholder="Price"
52 value={ price }
53 onChange={ (e) => setPrice(e.target.value) }
54 />
55 </div>
56
57 <div className="field">
58 <button className="button is-primary">Update</button>
59 </div>
60 </form>
61 </div>
62 )
63 }
64
export default EditProduct
#11 Aplicación.js
Abra el archivo " App.js " en la carpeta " frontend/src ", luego cámbielo a lo siguiente:
1
2 import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
3 import ProductList from "./components/ProductList";
4 import AddProduct from "./components/AddProduct";
5 import EditProduct from "./components/EditProduct";
6
7 function App() {
8 return (
9 <Router>
10 <div className="container">
11 <div className="columns">
12 <div className="column is-half is-offset-one-quarter">
13 <Switch>
14 <Route exact path="/">
15 <ProductList />
16 </Route>
17 <Route path="/add">
18 <AddProduct />
19 </Route>
20 <Route path="/edit/:id">
21 <EditProduct />
22 </Route>
23 </Switch>
</div>
https://www.facebook.com
24
25 </div>
26 </div>
/sharer.php?u=https
https://twitter.com </Router>
27
%3A%2F 28 );
/home?status=CRUD%20Tutorial%20using%20Node%20JS
29 }
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
30
%2C%20React%20JS
/share?url=https export default App;
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
#12. Pruebas
%2C%20and%20MySQL%20(Full-
1
http://localhost:3000 (http://localhost:3000)
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
Ingrese " Título " y " Precio ", luego haga clic
%2C%20and%20MySQL%20(Full- en el botón " GUARDAR ".
Si la inserción es exitosa, verá la adición de datos a la lista de productos como se muestra a continuación:
Para actualizar los datos, haga clic en uno de los " Editar ", aparecerá un formulario como el siguiente: botones
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
Cambie el " Título " o el " Precio ", luego haga clic en el botón " ACTUALIZAR ".
Si la actualización es exitosa, verá cambios en los datos en la lista de productos como se muestra a continuación:
Para eliminar datos, haga clic en uno de los " Eliminar ". botones
Conclusión:
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F La discusión esta vez es cómo crear una aplicación de pila completa con un node.js express en el backend y un
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
frontend usando React JS.
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
De esa manera, tendrá una idea de cómo crear una aplicación web moderna que separe el backend y el frontend.
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
Entonces, ¿qué estás esperando? ¡Vamos a codi�car!
%2C%20and%20MySQL%20(Full-
BUSCAR
ÚLTIMOS ARTÍCULOS
(https://mfikri.com/en/blog/express-mysql-react) Tutorial CRUD usando Node JS, Express, React JS y MongoDB (MERN
Stack) (https://mfikri.com/en/blog/express-mysql-react)
M Fikri Setiadi 21 de septiembre
(https://mfikri.com/en/blog/codeigniter-login-jwt) CodeIgniter 4 Inicie sesión y regístrese con JWT (JSON Web Token)
(https://mfikri.com/en/blog/codeigniter-login-jwt)
M Fikri Setiadi 01 de septiembre
(https://mfikri.com/en/blog/codeigniter-vuejs-crud) Tutorial completo de CRUD CodeIgniter 4 y Vue JS (pila completa)
(https://mfikri.com/en/blog/codeigniter-vuejs-crud)
M Fikri Setiadi 28 de agosto
(https://mfikri.com/en/blog/restful-api-express-mongodb) Cómo crear una API RESTful con Node js, Express y
MongoDB (https://mfikri.com/en/blog/restful-api-express-mongodb)
M Fikri Setiadi 29 de julio
https://www.facebook.com
/sharer.php?u=https
MÁS POPULAR
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com (https://mfikri.com/en/blog/react-express-mysql-authentication) Regístrese e inicie sesión con autenticación JWT
%2C%20React%20JS
/share?url=https (React JS + Express + MySQL + Node JS) (https://mfikri.com/en/blog/react-express-mysql-authentication)
%2C%20and%20MySQL%20(Full-
%3A%2F M Fikri Setiadi 23 de diciembre
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express (https://mfikri.com/en/blog/react-crud-codeigniter) Tutorial completo de CRUD CodeIgniter 4 y React JS (Full-Stack)
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS (https://mfikri.com/en/blog/react-crud-codeigniter)
%2C%20and%20MySQL%20(Full-M Fikri Setiadi 09 de octubre
(https://mfikri.com/en/blog/express-mysql-react) Tutorial CRUD usando Node JS, Express, React JS y MongoDB (MERN
Stack) (https://mfikri.com/en/blog/express-mysql-react)
M Fikri Setiadi 21 de septiembre
TUTORIALES EN VÍDEO:
(https://youtu.be/OQspok-swzY)
Tutorial CRUD en tiempo real usando Node, Express, React, MySQL (Prisma + SWR) (https://youtu.be/OQspok-swzY)
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
(https://youtu.be/OJU0L9D-Zdo)
Inicio de sesión multiusuario con Node JS, Express, MySQL y React JS (https://youtu.be/OJU0L9D-Zdo)
(https://youtu.be/Gv_A7jHsMmk)
Cómo crear desplazamiento infinito con Node JS, Express, React JS, MySQL (pila completa) (https://youtu.be
/Gv_A7jHsMmk)
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
(https://youtu.be/XkRkUSkEgxI)
Búsqueda y paginación con Node, Express, React, MySQL (mejores prácticas) (https://youtu.be/XkRkUSkEgxI)
(https://youtu.be/jPjPGAQOMac)
CRUD + Tutorial de imágenes con Node JS, Express, React JS y MYSQL (MERN STACK) (https://youtu.be/jPjPGAQOMac)
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
(https://www.hostg.xyz/SH96M)
1:14:22
(https://youtu.be/OQspok-swzY)
Tutorial CRUD en tiempo real usando Node, Express, React, MySQL (Prisma + SWR) (https://youtu.be/OQspok-swzY)
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
3:41:16
(https://youtu.be/OJU0L9D-Zdo)
Inicio de sesión multiusuario con Node JS, Express, MySQL y React JS (https://youtu.be/OJU0L9D-Zdo)
49:42
(https://youtu.be/Gv_A7jHsMmk)
Cómo crear desplazamiento infinito con Node JS, Express, React JS, MySQL (pila completa) (https://youtu.be
/Gv_A7jHsMmk)
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
1:08:55
(https://youtu.be/XkRkUSkEgxI)
Búsqueda y paginación con Node, Express, React, MySQL (mejores prácticas) (https://youtu.be/XkRkUSkEgxI)
1:22:51
(https://youtu.be/jPjPGAQOMac)
CRUD + Tutorial de imágenes con Node JS, Express, React JS y MYSQL (MERN Stack) (https://youtu.be/jPjPGAQOMac)
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express
%2Fmfikri.com%2Fen%2Fblog%2Fnode-
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-
1:03:00
(https://youtu.be/es9_6RFR7wk)
Tutorial FULL CRUD con Node JS, Express, React JS y MySQL (Full Stack) (https://youtu.be/es9_6RFR7wk)
COMENTARIOS (5)
gracias Señor ..
¡¡¡Excelente!!! Gracias
NOMBRE
COMENTARIO
SEND COMMENT
https://www.facebook.com
/sharer.php?u=https
https://twitter.com
%3A%2F
/home?status=CRUD%20Tutorial%20using%20Node%20JS
%2Fmfikri.com%2Fen%2Fblog%2Fnode- Copyright © 2017-2022 by mfikri.com (https://mfikri.com/) | All Right Reserved
%2C%20Express
https://plus.google.com
%2C%20React%20JS
/share?url=https
%2C%20and%20MySQL%20(Full-
%3A%2F
Stack)%20https
%2Fmfikri.com%2Fen%2Fblog%2Fnode- (https://www.facebook.com
(https://www.instagram.com
(https://twitter.com
(https://plus.google.com
(https://id.pinterest.com
t=CRUD%20Tutorial%20using%20Node%20JS
%3A%2F
%2C%20Express English (EN) (https://mfikri.com/en/blog/) | Indonesia (ID) (https://mfikri.com/blog/) /mfikridotcom/)
%2Fmfikri.com%2Fen%2Fblog%2Fnode- /mfikricom/)
/MFikri75770694/)
/u/0/+mfikri/)
/mfikricom/)
%2C%20React%20JS
%2C%20and%20MySQL%20(Full-