GFXARGENTINA
    Blog
  • Portfolio
  • Contacto
Como agregar la funcionalidad de Busqueda en Nodejs Mongodb y mongoose
gfxargentina

gfxargentina

27-04-2022

Como agregar la funcionalidad de Busqueda en Nodejs Mongodb y mongoose

Que tal gente les comparto la manera que yo hice para agregarle la funcionalidad de busqueda a la app de Gestion de Talleres de Reparación de Televisores que estoy haciendo, pueden ver el repo aqui: Repo Gestion Taller Reparacion Televisores

Voy a tratar de explicarlo a la manera que yo lo entendi, les aclaro que no soy un experto en programacion, llevo estudiando 2 años programación, si ven algo que esta mal o que se pueda hacer de mejor manera, porfavor envien un comentario y lo cambio.

El stack que use es el MERN con redux thunk, en esta parte voy a explicar la parte del backend en nodejs con mongodb y mongoose.

esta es la funcion del controlador que recibe la request del cliente, con desestructuracion saco los paramentos de req.query, estos parametros vienen de la url

https://app.com/cliente?searchNombre=nombre a buscar

cuando el frontend manda la request, req.query las toma.

escribo un try/catch para la funcionalidad

la variable LIMIT es el limite de documentos que se traen de la base de datos para mostrar en el frontend, en mi caso se van a mostrar 20 clientes por pagina

la variable startIndex es la cantidad de elementos que se van a mostrar por pagina, en mi caso la cantidad de clientes por pagina, convertimos page a numero-Number(page)- porque cuando page viene en la request del cliente esta en tipo String.

la variable total es para saber cuantos documentos hay en una coleccion, en mi caso para saber cuantos clientes tiene la base de datos y de eso dependera el numero de paginas que se mostraran en el frontend

esto verifica si de la request me llega un nombre, es verdadero entonces realiza la busqueda

la variable nombre crea una nueva expresion regex para que la busqueda sea case sensitive, o sea que busque en la base de datos por minusculas y mayusculas,

la variable clients realiza la busqueda en la base de datos, con find busca en el campo nombreApellido el nombre que le pasa el frontend por el request,

sort devuelve los ultimos documentos ordenados por fecha, limit es el numero limite de documentos que se traen de la bd,

skip utiliza la variable startIndex para saltar las pagina previas, por ej.: si saltamos a la pagina 2, no quieres que se muestren los 20 primeros resultados de nuevo, skip salta los primeros 20 resultados y muestra los siguientes en la pagina 2.

populate trae los aparatos del cliente, hace un join de las 2 tablas, cliente→aparatos, para esto tenemos que relacionarlas en el modelo(schema), de la tabla aparatos me trae los campos fechaEntrada fechaSalida aparato falla....etc

y al ultimo manda la respuesta para utilizarla en el frontend con redux, data envia los clientes con sus aparatos, currentPage envia el numero de la pagina y numberOfPages envia el numero total de paginas

y por ultimo si no hay ninguna busqueda desde el frontend la api devuelve todos los clientes con sus aparatos.

el codigo completo:

La parte del frontend la subo en la semana, si llegaste hasta aqui te agradeceria cualquier critica, muchas gracias

Fuentes que utilize:

https://www.youtube.com/watch?v=LYWgPSbPDfQ

https://mongoosejs.com/docs/populate.html

https://devcode.la/tutoriales/paginacion-en-nodejs/

https://www.youtube.com/watch?v=soWg_UtD_AM

gfxargentina

gfxargentina

Motion graphics - Web Development

Escribir un Comentario