Heim > Web-Frontend > js-Tutorial > Detaillierte Erläuterung der Methode zum Teilen von Datenbankverbindungen zwischen Node.js-Modulen (grafisches Tutorial)

Detaillierte Erläuterung der Methode zum Teilen von Datenbankverbindungen zwischen Node.js-Modulen (grafisches Tutorial)

亚连
Freigeben: 2018-05-21 11:25:03
Original
1863 Leute haben es durchsucht

Wir können ein einheitliches Datenbankverbindungsmodul für die gemeinsame Nutzung zwischen Modulen in der lokalen Node-Umgebung schreiben. Als Nächstes erklären wir ausführlich die Methode zur gemeinsamen Nutzung von Datenbankverbindungen zwischen Node.js-Modulen.

Dieser Titel selbst ist ein Vorschlag, da jedes Modul in einer Node.js-Anwendung standardmäßig dieselbe Datenbankverbindung nutzt. Aber wenn die Haltung falsch ist, kann es hässlich aussehen oder sogar schief gehen.

Sie können diesen Teil ignorieren und direkt zur Sache kommen.

HintergrundKürzlich beschäftige ich mich mit der Gestaltung professioneller Kurse, der Titel lautet „System zur Verwaltung von Flugticketreservierungen“. Die Anforderung ist relativ einfach, daher habe ich versucht, Node.js zu verwenden, das ich kürzlich gelernt habe, um sie zu erfüllen. Ich habe ursprünglich recherchiert, welches Node.js-Framework besser geeignet wäre. Nachdem ich mir einige Frameworks angesehen hatte, wurde mir klar, dass dies übertrieben war. Wenn ich keine Zeit hätte, nach Dokumenten und Informationen zu suchen, könnte ich genauso gut damit beginnen, es zu schreiben . Nachdem ich den Code fertig geschrieben habe, werde ich ihn auf Github veröffentlichen. Jeder kann mich gerne kritisieren und korrigieren.

Was die Datenbank betrifft, dachte ich, dass ich mit JSON vertraut bin und es mag (geben Sie es einfach zu, wenn Sie SQL nicht gut gelernt haben -_-#), also habe ich mich für MongoDB entschieden. Node + Mongo ist in den letzten Jahren eine immer beliebter werdende Backend-Kombination und es gibt im Internet zahlreiche Informationen zur gemeinsamen Nutzung. Um jedoch Zeit zu sparen (das Kursdesign dauert nur mehr als eine Woche) und mich mehr auf das System und die Logik zu konzentrieren, habe ich Mongoose verwendet, eine Node.js-Erweiterung, die speziell für die MongoDB-Datenmodellierung verwendet wird, um die für den Betrieb erforderliche Zeit erheblich zu reduzieren Der Datenbankcode.

Auf den Punkt gebrachtIch habe zwei Datenmodelle (Model) erstellt, eines ist der Benutzer (User) und das andere ist der Flug (Flight), die in user.js und Flight gekapselt sind .js bzw. innerhalb eines Moduls. Das Modell ist speziell für die Interaktion mit der Datenbank verantwortlich. Sowohl das Benutzer- als auch das Flugmodul müssen eine Verbindung zur Datenbank herstellen. Am Anfang sah mein Code so aus:

// ----- user.js -----
// require mongoose.js 引用mongoose.js
var M = require('mongoose');
// connect to database 连接数据库
M.connect('mongodb://localhost/test');
// ... some other code ...

// ----- flight.js -----
// require mongoose.js 引用mongoose.js
var M = require('mongoose');
// connect to database 连接数据库
M.connect('mongodb://localhost/test');
// ... some other code ...

// ----- models.js -----
var user = require('./user'),
  flight = require('./flight');

// ----- index.js -----
var Models = require('./models');
Nach dem Login kopieren

Ganz zu schweigen davon, dass dies nicht der Fall ist Überhaupt trocken, diese Methode selbst ist einfach falsch. Wenn ich index.js ausführe, erhalte ich die folgende Fehlermeldung.

> node index.js
> Connection error: { [Error: Trying to open unclosed connection.] state: 2 }
Nach dem Login kopieren

Der Fehler ist: Es wurde versucht, eine Verbindung zu öffnen, die nicht geschlossen wurde.

Wir sollten also einmal an einem Ort eine Verbindung zur Datenbank herstellen und dann andere Module, die eine Verbindung zur Datenbank herstellen müssen, über dieses Modul mit der Datenbank interagieren. Es ist wie eine Steckdosenleiste, die ohne zu zögern schreit: „Es gibt nur eine Steckdose an der Wand, schnapp sie dir nicht! Lass es mich machen! Du... Das ist es!“

Konkreter Plan Wir packen die Aktion zum Herstellen einer Verbindung zur Datenbank in ein Modul ein und stellen die Verbindung anderen Modulen in der gesamten Anwendung zur Verfügung. Anschließend können andere Module, die eine Verbindung zur Datenbank herstellen müssen, auf diese Verbindung verweisen.

// ----- database.js -----
var M = require('mongoose');
M.connect('mongodb://localhost/test');
// reference to the database connection 为这个连接创建一个引用
var db = M.connection;
// expose to modules that require database.js 把这个引用暴露给引用 database 模块的其他模块
module.exports = db;

// ----- user.js ----- flight.js 类似 -----
// ... some other code ...
// 我们会在 models.js 中,把数据库连接的引用作为参数传进来
module.exports = function( db ){
  if( db ){
    // ... do things with the connection ... 如果连接了数据库,就可以执行数据库相关的操作了
  }
}

// ----- models.js -----
// require database module, retrieve the reference to database connection 引用 databse 模块,获取数据库连接的引用
var db = require('./database');
// 把数据库连接的引用传入需要连接数据库的模块,任务完成!
var user = require('./user')( db ),
  flight = require('./flight')( db );
Nach dem Login kopieren

Dies ist eine Möglichkeit für mehrere Module einer Node.js-Anwendung, eine Datenbankverbindung gemeinsam zu nutzen. Ich habe das auf StackOverflow gesehen.

Das Obige habe ich für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

Detaillierte Erläuterung verschiedener Ausleihmethoden in JavaScript (Bild- und Text-Tutorial)

Verwendung von JavaScript Implementieren Sie die String-Methode des Mustervergleichs

Javascript Diese ausführliche Erklärung (grafisches Tutorial)

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Methode zum Teilen von Datenbankverbindungen zwischen Node.js-Modulen (grafisches Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage