Menu
CoddyTech

Một module cơ sở dữ liệu

Thuộc phần Cơ sở dữ liệu với MongoDB trong hành trình Node.js của Coddy. Bài học 26 trên 29.

Một tệp vừa mở cơ sở dữ liệu vừa chứa tất cả các route sẽ khó đọc, và bất kỳ tệp nào khác cần books đều phải kết nối lại.

Chuyển kết nối sang một module riêng. Code ở cấp cao nhất của module chỉ chạy một lần, khi có tệp đầu tiên import module đó, và mọi lần import sau đều nhận cùng các phần được export. Vì vậy, client, chỉ mục và dữ liệu seed chỉ chạy một lần, dù có bao nhiêu tệp import các collection. await ở cấp cao nhất hoạt động trong module, và tệp import sẽ chờ cho đến khi phần đó chạy xong.

// 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

Thử thách

Dễ
  • server.js hiện nhập books và ratings từ ./db.js, nên chưa thể khởi động.
  • Trong db.js, hãy tạo client, xuất cả hai collection, tạo chỉ mục ISBN, rồi thêm dữ liệu ban đầu cho sách và tác giả.

Nhấn Chạy: mọi route vẫn phản hồi như trước. Gửi GET /books hai lần: vẫn có ba cuốn sách.

Tự làm thử

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' },
];

// Tạo client tại đây, export các bộ sưu tập books và ratings,
// tạo chỉ mục ISBN, rồi nạp dữ liệu ban đầu từ bookList và authorList.
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Cơ sở dữ liệu với MongoDB

Tự luyện tập: Playground Express