Dieser Titel selbst ist ein Vorschlag, da jedes Modul in einer Node.js -Anwendung standardmäßig mit derselben Datenbankverbindung freigegeben wird. Aber wenn die Haltung falsch ist, kann sie hässlich sein und sogar schief gehen.
Sie können den folgenden Teil ignorieren und auf den Punkt kommen.
Hintergrund
Vor kurzem mache ich professionelles Kursdesign, der Titel ist "Air Ticket Booking Management System". Die Anforderung ist relativ einfach, daher habe ich versucht, den Knoten zu verwenden. Js, das ich in letzter Zeit gelernt habe. Ich habe auch untersucht, welche Art von Node.js Framework besser geeignet ist. Nachdem ich ein paar Frameworks gelesen hatte, stellte ich fest, dass dies ein Killer ist. Wenn Sie Zeit haben, die Dokumente zu lesen und Informationen zu durchsuchen, ist es besser, sie direkt zu schreiben. Nach dem Schreiben werde ich schließlich den Code auf GitHub setzen. Jeder ist herzlich eingeladen, mich zu kritisieren und zu korrigieren.
In Bezug auf die Datenbank dachte ich, ich wäre besser mit JSON und mochte JSON (ich gebe es zu, wenn ich SQL-gut -_-#nicht gelernt habe, also habe ich mich für MongoDB entschieden. Node + Mongo ist in den letzten Jahren eine immer beliebtere Backend -Kombination, und es gibt viele Informationen darüber, wie sie im Internet gemeinsam verwendet werden können. Um Zeit zu sparen (das Kursdesign dauert nur über eine Woche) und sich mehr auf das System und die Logik konzentrieren, habe ich Mongoose, einen Knoten.JS -Erweiterung, verwendet, der speziell für die MongoDB -Datenmodellierung verwendet wird, um den Code, der die Datenbank betreibt, erheblich zu reduzieren.
Hauptthema
Ich habe zwei Datenmodelle festgelegt, einer ist der Benutzer (Benutzer) und der andere ist der Flug (Flug), der in die beiden Module (Module) von user.js, flight.js eingekapselt ist. Das Modell ist speziell für die Interaktion mit der Datenbank verantwortlich. Sowohl die Benutzer- als auch die Flugmodule müssen eine Verbindung zur Datenbank herstellen. Am Anfang war mein Code wie folgt:
//. fordern ('mongoose'); // eine Verbindung zur Datenbank verbinden. Verbinden Sie eine Datenbank m.connect ('mongodb: // localhost/test'); // ... ein anderer Code ... // ------- Modelle.js ----- var user = Require ('./ User'), Flight = Require ('./ Flight';Ganz zu schweigen davon, dass diese Schreibmethode überhaupt nicht trocken ist, diese Methode selbst ist falsch. Wenn ich index.js ausführe, erhalte ich den folgenden Fehler.
> Node Index.js> Verbindungsfehler: {[Fehler: Versuch, die nicht abgestellte Verbindung zu öffnen.] Zustand: 2}Der Fehler lautet: Versuchen Sie, eine nicht abgestellte Verbindung zu öffnen.
Wir sollten also einmal an einem Ort eine Verbindung zur Datenbank herstellen, und dann andere Module, die eine Verbindung zur Datenbank herstellen müssen, interagieren mit der Datenbank über dieses Modul. Es war wie ein Kabelbrett, und er schrie ohne zu zögern: "Es ist nur eine Steckdose an der Wand, rauben Sie es nicht! Lassen Sie mich gehen! Sie ... das ist in Ordnung!"
Spezifischer Plan
Wir setzen die Aktion der Verbindung zur Datenbank in ein Modul ein und setzen die Verbindung mit anderen Modulen in der gesamten Anwendung aus, und dann andere Module, die eine Verbindung zur Datenbank herstellen müssen, können auf diese Verbindung verweisen.
// ----- Datenbank.js ----- var m = required ('mongoose'); m.connect ('mongodb: // localhost/test'); // Verweise auf die Datenbankverbindung erstellen eine Referenz für diese Verbindung var db = m.connection; // expose auf modules modules modules modules modules fordern. ----- user.js ----- flIch.js ähnlich -----/... ein anderer Code ... // Wir übergeben die Referenz der Datenbankverbindung als Parameter in Models.js module.exports = function (db) {if (db) {// ... Dingen Sie Dinge mit der Verbindung. Abrufen Sie die Referenz auf die Datenbankverbindung ab. Siehe die Datenbankverbindung var db = fordert ('./datenbank'); // Übergeben Sie die Referenz an die Datenbankverbindung in das Modul, das eine Verbindung zur Datenbank herstellen muss, und die Aufgabe ist abgeschlossen! var user = required ('./ user') (db), flug = required ('./ flight') (db);Dies ist eine Möglichkeit, mehrere Module einer Node.js -Anwendung zu erhalten, um Datenbankverbindungen zu teilen. Ich habe es auf Stackoverflow gesehen. Wenn Sie einen besseren Weg haben, teilen Sie es Ihnen bitte in den Kommentaren mit!