"scripts": {
"dev": "nodemon src/index.js",
"start": "node src/index.js"
},
Tener creado un .gitignore con:
node_modules/
.env
Y subir todo al respositorio de github o bitbucket
El blog ideal para los principiantes (y no tan principiantes) en programación PHP
"scripts": {
"dev": "nodemon src/index.js",
"start": "node src/index.js"
},
Tener creado un .gitignore con:
node_modules/
.env
npm i dotenv
Creamos el fichero .env en la raiz
PORT=3000
DB_HOST=localhost
DB_PORT=3306 # es el port para mysql
DB_USER=root
DB_PASSWORD=
DB_DATABASE=ejemplo
Creamos el fichero src/config.js
import {config} from "dotenv"
config()
export const PORT = process.env.PORT || 3000
export const DB_HOST = process.env.DB_HOST || localhost
export const DB_PORT = process.env.DB_PORT || 3306
export const DB_USER = process.env.DB_USER || root
export const DB_PASSWORD = process.env.DB_PASSWORD || ""
export const DB_DATABASE = process.env.DB_DATABASE || ejemplo
Y ahora ya en el fichero src/db.js:
import {createPool} from "mysql2/promise"
import {PORT,DB_HOST,DB_PORT,DB_USER,DB_PASSWORD,DB_DATABASE} from "./config.js"
export const pool = createPool({
host: DB_HOST,
user: DB_USER,
password: DB_PASSWORD,
port: DB_PORT,
database: DB_DATABASE
})
Una forma más limpia y ordenada es no poner todo el código en index.js sino crear un fichero src/app.js donde meter todas las inicializaciones del index, y en el index dejar solo:
import app from "./app.js"
import {PORT} from "./config.js"
app.listen(PORT)
console.log("server funcionando en: "+PORT)
try {
const [rows] = await pool.query("select * from clientes")
res.json(rows)
}
catch(error) {
return res.status(500).json({
message: "algo ha fallado"
})
}
// si no encuentra ninguna ruta que saque un error de pag no encontrada
app.use((req,res,next) => {
res.status(404).json({
message: "Error: Esa url no existe"
})
})
router.put("/updateCliente/:id",updateCliente)
export const updateCliente = async (req,res) => {
const id = req.params.id
const {nombre,edad,profesion} = req.body
const [result] = await pool.query("update clientes set nombre=IFNULL(?,nombre), edad=IFNULL(?,edad), profesion=IFNULL(?,profesion) where id = ?",[nombre,edad,profesion,id])
if (result.affectedRows == 0) {
return res.status(404).json({
message: "Cliente no se pudo actualizar"
})
}
res.send("Cliente actualizado")
}
router.delete("/deleteCliente/:id",deleteCliente)
export const deleteCliente = async (req,res) => {
const [result] = await pool.query("deleteeee from clientes where id = ?",[req.params.id])
if (result.affectedRows <=0) {
return res.status(404).json({
"message": "Cliente no encontrado al intentar borrarlo"
})
}
res.sendStatus(204) // que todo OK pero no envia nada
}
router.get("/getCLientes",getClientes)
router.get("/getCLienteById/:id",getClienteById)
export const getClientes = async (req,res) => {
const [rows] = await pool.query("selectttt * from clientes")
res.json(rows)
}
export const getClienteById = async (req,res) => {
const [rows] = await pool.query("selecttttt * from clientes where id = ?", [req.params.id])
if (rows.length <= 0) {
return res.status(404).json({
"message": "Cliente no encontrado"
})
}
res.json(rows[0])
}
{
"nombre": "nom3",
"edad": 33,
"profesion": "prof3"
}
app.use(express.json());
export const crearCliente = async (req,res) => {
const {nombre,edad,profesion} = req.body
const [rows] = await pool.query("insert into clientes(nombre,edad,profesion) values (?,?,?)", [nombre,edad,profesion])
res.send(rows)
}
export const getClientes = (req,res) => {
res.send("Aquí obtendremos todos los clientes")
}
export const crearCliente = (req,res) => {
res.send("Crear cliente nuevo")
}
export const updateCliente = (req,res) => {
res.send("Actualizar cliente")
}
export const deleteCliente = (req,res) => {
res.send("Borrar cliente")
}
import {Router} from "express"
import {getClientes,crearCliente,updateCliente,deleteCliente} from "../controllers/clientesControllers.js"
const router = Router()
router.get("/getCLientes",getClientes)
router.post("/crearCliente",crearCliente)
router.put("/updateCliente",updateCliente)
router.delete("/deleteCliente",deleteCliente)
export default router;
import {Router} from "express"
import {pool} from "../src/db.js"
const router = Router()
router.get("/probarCnn", async (req,res) => {
const result = await pool.query("select * from clientes")
res.json(result)
})
export default router;
Y luego para usarlo en nuestro index.js:
import indexRoute from "../routes/index_routes.js"
...
app.use(indexRoute)
import {Router} from "express"
const router = Router()
router.get("/getCLientes",(req,res) => {
res.send("Aquí obtendremos todos los clientes")
})
export default router;
Y para usarlo en el index (o en el fichero q queramos):
import clientRoute from "../routes/clientes_routes.js"
...
app.use(clientRoute)
npm init -y
npm i express nodemon
Para probar nodemon en el script del package.js:
"scripts": {
"dev": "nodemon src/index.js"
},
Y así para ejecutarlo:
npm run dev
"type": "module",
Para así poder import/export módulos más fácilmente de un archivo a otro
npm i dotenv -D
Y luego para usarlo en cualquier fichero js:
require("dotenv").config();
...
console.log(process.env.PORT);
npm install --save mysql2
import {createPool} from "mysql2/promise"
export const pool = createPool({
host:'localhost',
user:'root',
password:'',
port:3306,
database: 'ejemplo'
})
import {pool} from "./db.js"
...
app.get("/probarCnn", async (req,res) => {
const result = await pool.query("select * from clientes")
res.json(result)
})
root directory: .
Build command: npm install
start command: node src/index.js