Un modulo per il database
Fa parte della sezione Database con MongoDB del percorso Node.js di Coddy. Lezione 15 di 18.
Un unico file che apre il database e contiene tutte le route diventa difficile da leggere, e qualsiasi secondo file che abbia bisogno di books dovrebbe connettersi di nuovo.
Sposta la connessione in un modulo dedicato. Il codice al livello superiore di un modulo viene eseguito una sola volta, la prima volta che un file lo importa, e ogni importazione successiva ottiene le stesse esportazioni. Così il client, l'indice e il seed vengono eseguiti una sola volta, indipendentemente da quanti file importino le raccolte. await al livello superiore funziona in un modulo e il file che lo importa attende che termini.
// 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';Sfida
Facileserver.jsora importabookseratingsda./db.js, quindi non può ancora avviarsi.- In
db.js, crea il client, esporta entrambe le collezioni, crea l'indice ISBN e inizializza i dati di books e authors.
Premi Run: ogni route risponde come prima. Invia GET /books due volte: ci sono ancora tre libri.
Provalo tu
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' },
];
// Crea qui il client, esporta le collection books e ratings,
// crea l'indice ISBN e popola il database con bookList e authorList.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.