Menu
CoddyTech

Модуль базы данных

Часть раздела Базы данных с 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';
challenge icon

Задание

Легко
  • Теперь 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.
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Базы данных с MongoDB