Truy cập CSDL MongoDB qua Node.js
Chúng ta sẽ tạo một web server mới cái thay vì trả về các users từ một JSON file, trả về danh sách các users từ
users collection tạo trước kia của chúng ta:
1. Trong thư mục ch2, mở một Terminal. Cài đặt gói mongodb, cái chứa driver MongoDB chính thức cho Node.js:
$ npm install mongodb@6.3.0
2. Tạo một backend/mongodbweb.js file mới và mở nó. Nhập khẩu những cái sau:
import { createServer } from ‘node:http’
import { MongoClient } from ‘mongodb’
3. Định nghĩa URL kết nối và tên CSDL và sau đó tạo một MongoDB client mới:
const url = ‘mongodb://localhost:27017/’
const dbName = ‘ch2’
const client = new MongoClient(url)
4. Kết nối tới CSDL và ghi lại một thông điệp sau khi chúng ta đã kết nối thành công, hay khi có một lỗi với kết
nối:
try {
await client.connect()
console.log(‘Successfully connected to database!’)} catch (err) {
console.error(‘Error connecting to database:’, err)
}
5. Tiếp theo, tạo một HTTP server, giống như chúng ta đã làm trước đây:
const server = createServer(async (req, res) => {
6. Sau đó, chọn CSDL từ client, và users collection từ CSDL:
const db = client.db(dbName)
const users = db.collection(‘users’)
7. Bây giờ, thực thi phương thức find() trên users collection. Trong MongoDB Node.js driver, chúng ta cũng cần gọi
phương thức toArray() để phân giải cái lặp tới mảng:
const usersList = await users.find().toArray()
8. Cuối cùng, thiết lập status code và header trả lời, và trả về danh sách users:
res.statusCode = 200
res.setHeader(‘Content-Type’, ‘application/json’)
res.end(JSON.stringify(usersList))})
9. Bây giờ rằng chúng ta đã định nghĩa server của chúng ta, copy trên code từ trước để lắng nghe tới localhost trên
cổng 3000:
const host = ‘localhost’
const port = 3000
server.listen(port, host, () => {console.log(`Server listening on http://${host}:${port}`)
})
10. Chạy server bằng cách thực thi script:
$ node backend/mongodbweb.js
11. Mở http://localhost:3000 trong trình duyệt của bạn và bạn nên thấy danh sách các users từ CSDL của chúng ta được
trả về:
Như chúng ta đã thấy, chúng ta có thể sử dụng các phương pháp tương tự cái chúng ta cũng đã sử dụng trong MongoDB
Shell trong Node.js. Tuy nhiên, các APIs của node:http module và gói mongodb là ở lõi, yêu cầu nhiều code để tạo
một HTTP API và nói chuyện với CSDL.
Trong học phần tiếp theo, chúng ta sẽ học về các thư viện cái trừu tượng hóa các quá trình này để cho phép cho
tạo dễ hơn các HTTP APIs và xử lí CSDL. Các thư viện này là Express và Mongoose. Express là một khung web cái
cho phép chúng ta dễ dàng định nghĩa các định tuyến API và xử lí các yêu cầu. Mongoose cho phép chúng ta tạo các
schemas cho các tài liệu trong CSDL của chúng ta để dễ dàng hơn tạo, đọc, cập nhật và xóa các objects.

