ccc

Mostrando entradas con la etiqueta Node Controllers. Mostrar todas las entradas
Mostrando entradas con la etiqueta Node Controllers. Mostrar todas las entradas

Node.js: Actualizar un dato

En el clientesRoutes.js:
router.put("/updateCliente/:id",updateCliente)
En el clientesController:
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")
}

A la hora de envíar se pondrá en el Thunder Client (o en el POstman) PUT localhost:3000/updateCliente/2

Por convenio si no se van a actualizar todos los datos entonces se envía con PATCH (aunque hace lo mismo que PUT)

Node.js Controllers: Borrar un dato

En \src\routes\clientesRoutes.js:
router.delete("/deleteCliente/:id",deleteCliente)
En \src\controllers\clientesControllers.js:
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
}

Node.js controllers: Obtener datos

En \src\routes\clientesRoutes.js:
router.get("/getCLientes",getClientes)
router.get("/getCLienteById/:id",getClienteById)

En \src\controllers\clientesControllers.js:
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])
}

Node.js: Controllers: Insertar datos

Para probarlo desde el postman o desde el Thunder Client enviamos la prueba en json a:
POST: localhost:3000/crearCliente:
{
   "nombre": "nom3",
   "edad": 33,
   "profesion": "prof3"
}

Para poder recibir en json en el index.js tenemos q tener:
app.use(express.json());
Y luego en clientesController:
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)
}

Node.js: Controllers

Creas un fichero \src\controllers\clientesControllers.js:
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")
}

Y en \src\routes\clientesRoutes.js:
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;