MongoDB에 연결하기
Coddy Node.js 여정의 MongoDB 데이터베이스 섹션에 포함된 레슨. 18개 중 1번째.
서버의 배열은 서버가 중지될 때마다 사라집니다. 데이터베이스는 데이터를 보관합니다. MongoDB는 문서를 저장하는 데이터베이스 서버입니다. 문서는 JSON과 비슷한 객체입니다. 문서는 컬렉션에 저장되고, 컬렉션은 데이터베이스에 저장됩니다.
import { MongoClient } from 'mongodb';
const client = new MongoClient('mongodb://localhost:27017');
const movies = client.db('cinema').collection('movies');
await movies.insertOne({ title: 'Alien', year: 1979 });
const all = await movies.find().toArray();클라이언트는 해당 주소에 있는 데이터베이스 서버와 통신합니다. insertOne은 문서 하나를 저장합니다. find()는 요청을 받았을 때만 결과를 읽는 객체인 커서를 반환하며, toArray()는 모든 결과를 배열로 읽어옵니다. 호출할 때마다 데이터베이스에 요청을 보내므로 각각에 await가 필요합니다.
여기서 Run을 누르면 메모리에서 빈 MongoDB가 시작되고, Data 탭에 컬렉션이 표시됩니다. 시작 코드는 insertMany를 사용해 책 세 권을 추가합니다. 이 메서드는 문서 배열을 받습니다.
챌린지
쉬움GET /books를 추가하세요. 이 엔드포인트는books컬렉션의 모든 문서를 JSON 배열로 반환합니다.
Run을 누르고 Data 탭을 열어 세 권의 책을 확인하세요. 그런 다음 GET /books를 보내세요.
직접 해보기
import express from 'express';
import { MongoClient } from 'mongodb';
const client = new MongoClient('mongodb://localhost:27017');
const db = client.db('shelf');
const books = db.collection('books');
await books.insertMany([
{ 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' },
]);
const app = express();
app.use(express.json());
// 모든 오류는 { error: message } 형식으로 응답합니다.
function sendError(res, status, message) {
res.status(status).json({ error: message });
}
app.get('/', (req, res) => {
res.send('Bookshelf API');
});
// 여기에 GET /books를 추가하세요.
app.listen(3000, () => {
console.log('Bookshelf is running on port 3000');
});
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.