Estoy escribiendo una aplicación web en node.js. Ahora, cada procesamiento en el servidor siempre se realiza en el contexto de una sesión que se recupera o se crea en la primera etapa cuando la solicitud llega al servidor. Después de esto, la ejecución fluye a través de múltiples módulos y devoluciones de llamada dentro de ellos. Lo que me cuesta es crear un patrón de programación para que, en cualquier punto del código, el objeto de sesión esté disponible sin que el programador lo exija como argumento en cada llamada de función.Node.js Patrón de programación para obtener el contexto de ejecución
Si todo el código estuviera en un solo archivo podría haber tenido un cierre, pero si hay llamadas a otros módulos en otros archivos, ¿cómo programo para que el objeto de sesión esté disponible en la función llamada sin pasarlo? como un argumento Siento que debería haber algún vínculo entre las dos funciones en los dos archivos, pero cómo arreglar eso es donde me estoy estancando.
En general, me gustaría decir que siempre hay un contexto de ejecución que podría ser una sesión o una solicitud de red cuyo procesamiento se distribuye en varios archivos y el objeto de contexto de ejecución estará disponible en todos los puntos. En realidad, puede haber varios casos de uso como tener un objeto de registro para cada solicitud de red o un objeto de registro por sesión. Y las tuberías necesarias para hacer este trabajo deberían instalarse de lado sin que el programador de la aplicación se preocupe por ello. Él solo sabe que ese contexto de ejecución está disponible en todos los lugares.
Creo que debería ser un problema bastante común para todos, así que por favor denme algunas ideas.
A continuación se presenta el problema
MainServer.js
app = require('express').createServer();
app_module1 = require('AppModule1');
var session = get_session();
app.get('/my/page', app_module1.func1);
AppModule1.js
app_module2 = require('AppModule2');
exports.func1 = function(req,res){
// I want to know which the session context this code is running for
app_module2.func2(req,res);
}
AppModule2.js
exports.func2 = function(req,res){
// I want to know where the session context in which this code is running
}
Si calculó una manera de hacer esto, por favor, responde a su propia pregunta. –