Este título en sí es una propuesta, porque de forma predeterminada, cada módulo en una aplicación Node.js se comparte con la misma conexión de base de datos. Pero si la postura está mal, puede ser fea e incluso puede salir mal.
Puede ignorar la siguiente parte y llegar al punto.
fondo
Recientemente, estoy haciendo un diseño de curso profesional, el título es "Sistema de gestión de reservas de boletos aéreos". El requisito es relativamente simple, por lo que intenté usar el nodo.js que estaba aprendiendo recientemente. También estaba investigando qué tipo de marco nodo.js es más adecuado. Después de leer algunos marcos, descubrí que este es un asesino. Si tiene tiempo para leer los documentos y la información de búsqueda, es mejor escribirlo directamente. Finalmente, después de escribir, pondré el código en GitHub. Todos son bienvenidos para criticarme y corregirme.
En términos de base de datos, pensé que estaba más familiarizado y me gustó JSON (lo admito si no aprendí bien SQL -_-#), así que elegí MongoDB. Node + Mongo es una combinación de backend cada vez más popular en los últimos años, y hay mucha información sobre cómo usarla juntas en Internet. Pero para ahorrar tiempo (el diseño del curso es solo más de una semana) y se centra más en el sistema y la lógica, utilicé Mongoose, una extensión de nodo.js especialmente utilizada para el modelado de datos MongoDB, para reducir en gran medida el código que opera la base de datos.
Tema principal
He establecido dos modelos de datos, uno es el usuario (usuario) y el otro es el vuelo (vuelo), que se encapsula en los dos módulos (módulos) de user.js, flight.js. El modelo es específicamente responsable de interactuar con la base de datos. Tanto el usuario como los módulos de vuelo deben conectarse a la base de datos. Al principio, mi código fue el siguiente:
// ------ user.js ----- // requiere referencia de Mongoose.js Mongoose.jsvar M = require ('Mongoose'); // Conéctese a la base de datos Conecte a Database M.Connect ('MongoDb: // localhost/test'); // ... algún otro código ... // ----- vuela .jsjs ------ // requerir Mongoe.js reference Mongoose Mongoose Mongoos. requerir ('Mongoose'); // Conéctese a la base de datos conectarse a la base de datos M.Connect ('MongoDb: // localhost/test'); // ... algún otro código ... // ------ Models.js ----- var user = require ('./ user'), flight = require ('./ Flight'); // ----- index.js ----- var modelos = requirir ('./ modelos');Sin mencionar que este método de escritura no está seco en absoluto, este método en sí mismo es incorrecto. Cuando ejecuto index.js, recibo el siguiente error.
> nodo index.js> Error de conexión: {[Error: intentando abrir la conexión no cerrada.] Estado: 2}El error es: intente abrir una conexión no cerrada.
Por lo tanto, debemos conectarnos a la base de datos una vez en un lugar, y luego otros módulos que necesitan conectarse a la base de datos interactúan con la base de datos a través de este módulo. Era como un tablero de cableado, y él gritó sin dudarlo: "Solo hay un zócalo en la pared, ¡no lo robes! ¡Déjame ir! ¡Tú ... está bien!"
Plan específico
Ponemos la acción de conectarnos a la base de datos en un módulo y exponemos la conexión a otros módulos en toda la aplicación, y luego otros módulos que necesitan conectarse a la base de datos pueden referirse a esta conexión.
// ----- database.js ----- var m = require ('mongoose'); m.connect ('mongodb: // localhost/test'); // referencia a la conexión de la base de datos Cree una referencia para esta conexión var db = m.connection; // exponer a módulos que requieren database.js exponen esta referencia a otros módulos que hacen referencia a la database moduleuleule.exports; user.js ----- Flight.js similar ------/... algún otro código ... // Pase la referencia de la conexión de la base de datos como parámetro en modelos.js module.exports = function (db) {if (db) {// ... hacer cosas con la conexión ... Si se conecta a la base dataBase, puede realizar operaciones de datos relacionadas con la base de datos} // ----- ----- Models.js --- --------REPLAZO, REPLAYA DETERMATA DETATA DETATA DETATA DETATA. Referencia a la conexión de la base de datos Consulte la conexión de la base de datos var db = require ('./ base de datos'); // ¡Pase la referencia a la conexión de la base de datos al módulo que debe conectarse a la base de datos, y la tarea se completa! VAR user = request ('./ user') (db), vuelo = require ('./ vuelo') (db);Esta es una forma de obtener múltiples módulos de una aplicación Node.js para compartir conexiones de base de datos. Lo vi en Stackoverflow. Si tiene una mejor manera, ¡compártelo con usted en los comentarios!