docker build -t formula-backend:1.0 -f ./Dockerfile.dev . # construir la imagen
Una vez creada la imagen de formula-frontend2
y formula-backend
, correr el comando docker-compose up
en el directorio donde está el archivo docker-compose.yml
. El backend correrá en localhost:3000/
.
docker compose down # borrará los datos de la BD
curl -X POST http://localhost:8080/v1/results/generate # demora 7 segundos porque lee CSVs e inserta varios datos en Mongo
O ejecutar el HTTP Request llamado Generate Data
en Postman.
-
Se usó Fuse.js para implementar el buscados de constructores. Esta librería crea un índice y le hace consultas en el main thread de Node.js. Por lo tanto, bloquea el event loop y si el número de constructores aumenta, las operaciones que Fuse.js usa podrían bloquear el event loop por más tiempo, por lo que subsiguientes requests no podrán ser servidas. Por lo tanto, estas operaciones deberían correr idealmente en un worker thread con la ayuda de la librería nativa de Node.js llamada worker-threads.
-
La clase
ConstructorSearch
sirve dos propósitos: índice de texto y caché de los constructores. Dado que el autocomplete de la web hace varias peticiones al backend, sería ineficiente hacerle todas estas peticiones a Mongo. Por lo tanto, el presente backend revalida cadattlMinutes
(atributo deConstructorSearch
) los constructores pidiéndoselos a Mongo. De esta manera, cuando el frontend pide los constructores, la consulta se ejecuta rápidamente en el mismo backend (no se accede a la base de datos). Al mismo tiempo, se m antiene la data de constructores relativamente actualizada al revalidar los constructores cadattlMinutes
. -
Podría poner más notas sobre la implementación, pero sería un documento muy extenso. Por lo tanto, cualquier duda de implementación no duden en escribirme por correo (gabriel.spranger@utec.edu.pe) o Discord (mrmm#7777).