Ein Datenbankmodul
Teil des Abschnitts Datenbanken mit MongoDB der Node.js-Journey von Coddy. Lektion 15 von 18.
Eine Datei, die die Datenbank öffnet und jede Route enthält, wird schwer lesbar, und jede zweite Datei, die books benötigt, müsste sich erneut verbinden.
Verschiebe die Verbindung in ein eigenes Modul. Der Code auf der obersten Ebene eines Moduls wird einmal ausgeführt, wenn eine Datei es zum ersten Mal importiert, und jeder spätere Import erhält dieselben Exporte. Der Client, der Index und die Seed-Daten werden also unabhängig davon, wie viele Dateien die Collections importieren, einmal ausgeführt. Top-Level-await funktioniert in einem Modul, und die importierende Datei wartet, bis es abgeschlossen ist.
// store.js
import { MongoClient } from 'mongodb';
const client = new MongoClient('mongodb://localhost:27017');
export const orders = client.db('shop').collection('orders');
await orders.createIndex({ number: 1 }, { unique: true });// server.js
import { orders } from './store.js';Aufgabe
Einfachserver.jsimportiert jetztbooksundratingsaus./db.js, daher kann es noch nicht gestartet werden.- Erstelle in
db.jsden Client, exportiere beide Sammlungen, erstelle den ISBN-Index und füge die Bücher und die Autoren als Anfangsdaten ein.
Drücke auf „Run“: Jede Route funktioniert wie zuvor. Sende zweimal GET /books: Es sind weiterhin drei Bücher.
Probier es selbst
import { MongoClient } from 'mongodb';
import { authorList } from './authors.js';
const bookList = [
{ title: 'Dune', author: 'Frank Herbert', year: 1965, isbn: '9780441013593', genre: 'scifi' },
{ title: 'Kindred', author: 'Octavia E. Butler', year: 1979, isbn: '9780807083697', genre: 'scifi' },
{ title: 'Emma', author: 'Jane Austen', year: 1815, isbn: '9780141439587', genre: 'classic' },
];
// Erstelle hier den Client und exportiere die Collections books und ratings,
// erstelle den ISBN-Index und befülle die Collections mit bookList und authorList.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.