데이터베이스 모듈
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';챌린지
쉬움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의 데이터로 초기화하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.