Menu
CoddyTech

데이터베이스 모듈

Coddy Node.js 여정의 MongoDB 데이터베이스 섹션에 포함된 레슨. 18개 중 15번째.

데이터베이스를 열고 모든 라우트를 담는 파일 하나는 읽기 어려워지며, 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는 이제 ./db.js에서 books와 ratings를 가져오므로 아직 시작할 수 없습니다.
  • db.js에서 클라이언트를 만들고, 두 컬렉션을 모두 내보내고, ISBN 인덱스를 만들고, 책과 저자 데이터를 초기화하세요.

실행을 누르세요. 모든 경로가 이전처럼 응답합니다. 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 데이터베이스의 모든 레슨