Estoy escribiendo una aplicación express, donde envío datos de mis vistas a una base de datos. Pero la mayoría de los datos se asignan a otros datos en las tablas de la base de datos.
Por ejemplo, es un menú desplegable para elegir el nombre del estudiante: una vez que elija al estudiante por su nombre, un menú desplegable a continuación mostrará todos los roles para los que está permitido.
Así que estoy siguiendo este patrón de
app.post('\action1', function(req,res){ function querySomething(){ var defered = Q.defer(); connection.query(some_select_query,defered.makeNodeResolver()); return defered.promise; } function querySomethingElse(){ var defered = Q.defer(); connection.query(some_other_select_query,defered.makeNodeResolver()); return defered.promise; } Q.all([querySomething(), querySomethingElse()]).then((results,err) => { connection.release() if(results){ res.render('some_view.ejs', { result1:results[0][0], result2:results[1][0] }); } else{ res.render('error.ejs',{}); } }) })Ahora, el problema es que tengo que seguir este patrón de seleccionar algo de varias tablas, pasar todas estas funciones a una promesa, y cuando los resultados se devuelven, ir a mi vista con todos esos objetos de resultado, para poder usarlos en mi punto de vista, como un medio para hacer menús desplegables que dependen unos de otros.
A veces tengo que reescribir esto varias veces.
Hacer una consulta de selección como esta requeriría un rendimiento intensivo, especialmente si todas las vistas usan el resultado de la misma consulta.
¿Hay alguna manera de que pueda crear un almacén de datos en caché en mi código del lado del servidor express y consultar eso en lugar de la base de datos real?
Si hay una inserción o una actualización, actualizaré esta tienda y simplemente haré una nueva selección * esa vez.
¿Qué bibliotecas hay además de Express que me ayudarán a hacer esto?
¿Mysql-cache hace lo mismo? También estoy usando la agrupación de conexiones con createPool.
¿Cómo logro esto, o simplemente restablezco el uso de grandes mvc como velas para reescribir mi aplicación?
Puede probar el módulo apiCache npm.
" A veces tengo que reescribir esto varias veces".
Según la necesidad comercial, es posible que desee manejar cada caso de uso por separado y este escenario no se ocupa del almacenamiento en caché.
Hacer una consulta de selección como esta requeriría un rendimiento intensivo, especialmente si todas las vistas usan el resultado de la misma consulta.
Este es un ejemplo clásico de la necesidad de almacenamiento en caché del lado del servidor .