Модуль базы данных
Часть раздела Базы данных с MongoDB путешествия по Node.js на Coddy. Урок 15 из 18.
Файл, который открывает базу данных и содержит все маршруты, становится трудным для чтения, а любому второму файлу, которому нужна коллекция books, пришлось бы подключаться заново.
Перенеси подключение в отдельный модуль. Код на верхнем уровне модуля выполняется один раз — при первом импорте этого модуля любым файлом, а при каждом последующем импорте возвращаются те же экспорты. Поэтому клиент, индекс и начальные данные создаются один раз, независимо от того, сколько файлов импортируют коллекции. В модуле можно использовать await на верхнем уровне, и импортирующий файл ждёт завершения его выполнения.
// 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';Задание
Легко- Теперь
server.jsимпортируетbooksиratingsиз./db.js, поэтому пока не может запуститься. - В
db.jsсоздайте клиент, экспортируйте обе коллекции, создайте индекс ISBN и заполните коллекции книгами и авторами.
Нажмите Run: все маршруты отвечают как и раньше. Отправьте GET /books дважды: по-прежнему три книги.
Попробуйте сами
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' },
];
// Создайте здесь клиент и экспортируйте коллекции books и ratings,
// создайте индекс ISBN и заполните базу данных данными из bookList и authorList.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.