1
Tổng quan
[Học theo clip: https://www.youtube.com/watch?v=7CqJlxBYj-M]
1.1
Tổng quan về MERN
MERN viết đầy đủ là MERN stack, là một bộ công nghệ mã nguồn
mở liên quan đến JavaScript. Gồm các công nghệ: MongoDB, Express, React/React
Native và Nodejs.
Mọi người sử dụng MERN stack để xây dựng một ứng dụng web dựa
trên JavaScript (React Universal App, Universal JavaScript App), gồm cả
client-side (front-end) và server-side (back-end).
Xem hình minh họa[1],
– MongoDB: là hệ quản trị cơ sở dữ liệu mã nguồn mở, là cơ sở
dữ liệu kiểu NoSQL (None-Relational SQL hoặc Not-Only SQL), là cơ sở dữ liệu hướng
tài liệu (document). Dữ liệu được lưu trữ dưới dạng JSON (ví dụ BSON).
– Express: là một JavaScript framework, chạy
ở server-side (backend), được xây dựng trên nền
tảng Nodejs. Express cung cấp các tính năng cần thiết để tạo ra một ứng dụng
web hoặc di động.
– React/React Native: React là một thư viện front-end (hay
UI) viết bằng JavaScript, do Facebook phát triển. React Native là framework kế
thừa từ React, dùng để viết ứng dụng di động đa nền tảng.
– Nodejs: là một nền tảng (platform) phát triển độc lập, được
xây dựng trên JavaScript Runtime của Chrome (V8). Dựa trên Nodejs chúng ta có
thể xây dựng được các ứng dụng mạng nhanh chóng, và dễ dàng mở rộng. Nodejs là
nền tảng giúp chạy JavaScript tại phía server. Nodejs được viết bằng C++.
1.2
Tổng quan về MongoDB
Như đã trình bày ở phần trên, MongoDB:
– Là hệ quản trị cơ sở dữ liệu mã nguồn mở
– Là cơ sở dữ liệu kiểu NoSQL (None-Relational SQL hoặc
Not-Only SQL)
– Là cơ sở dữ liệu
hướng tài liệu (document).
– Dữ liệu được
lưu trữ dưới dạng JSON (ví dụ BSON).
1.2.1 JSON là gì ?
JSON là viết tắt
của JavaScript Object Notation, dịch nôm na là "sử dụng cú pháp đối tượng
của JavaScript dưới dạng chuỗi để biểu diễn dữ liệu".
Để chạy các đoạn
mã JavaScript minh họa dưới đây: tạo một tập tin html (ví dụ test.html), trong tập tin html tạo cặp thẻ <script>//đặt
mã JavaScript ở đây</script>, mở tập tin test.html để xem kết quả.
Cú pháp một đối
tượng (object) thông thường trong
JavaScript có kiểu như sau:
var object = {};
Trong JavaScript,
nội dung của object gồm các cặp key:value hay có cách gọi khác là
property:value.
Ví dụ:
var sinhVien = {
name: 'Tèo',
age: 20,
GPA: 8,
chao: function() {
console.log('Chao anh Teo!');
}
};
console.log(sinhVien.name);
sinhVien.chao();
JSON là một object dạng chuỗi (thường gọi là chuỗi JSON) nên
nó khác một object thông thường một số điểm sau:
– key hoặc property phải được bao trong dấu nháy kép (“”)
– value có thể ở dạng: chuỗi, số, boolean, null, mảng hoặc đối
tượng
– không chứa hàm (function)
Ví dụ một chuỗi JSON, (để ý dấu ‘’ cho biết đó là một chuỗi, để phân biệt với BSON)
var sinhVienJSON = '{"name":"Tèo","age":20,"GPA":8}';
console.log(sinhVienJSON);
// đổi từ chuỗi JSON sang object
var sinhVienObj = JSON.parse(sinhVienJSON);
console.log(sinhVienObj);
// Hoặc
// khai báo một object
var sinhVienObject = {
name: 'Tèo',
age: 20,
GPA: 8,
};
console.log(sinhVienObject);
// đổi object sang chuỗi JSON
var sinhVienJSON = JSON.stringify(sinhVienObject);
console.log(sinhVienJSON); // {"name":"Tèo","age":20,"GPA":8}
console.log({sinhVienJSON}); // {sinhVienJSON:
"{"name":"Tèo","age":20,"GPA":8}"}
Lưu ý: trong chuỗi JSON không cho phép dùng dấu nháy đơn
(‘’) để bao một key hoặc value.
Một danh sách lớp
dưới dạng chuỗi JSON:
var studentsObj = [
{
name: 'Tèo',
age: 20,
GPA: 8,
},
{
name: 'Tí',
age: 20,
GPA: 7,
},
{
name: 'Mùi',
age: 20,
GPA: 6,
}];
var studentsJSON = JSON.stringify(studentsObj);
console.log(studentsJSON);
// chuyển chuỗi JSON về lại dạng object
var newStudentsObj = JSON.parse(studentsJSON);
console.log(newStudentsObj);
1.2.2 BSON là gì ?
BSON là Binary JSON,
là dữ liệu có định dạng kiểu JSON (dạng key : value) nhưng không phải là chuỗi JSON
mà là dạng binary (cho phép biểu diễn nhiều kiểu dữ liệu).
Dữ liệu của MongoDB
được lưu dưới dạng BSON (gọi là các BSON document).
Ví dụ một dữ liệu
kiểu BSON,
{
name: "Tèo", // string
age: 20, // integer
subjects: ["Văn", "Toán", "Sinh"], //array
address: {
street: "Đường làng",
town: "Lò gạch",
city: "Đồng quê"
} //nested document
}
1.2.3
Các tên gọi trong MongoDB
Bảng sau so sánh tên gọi (thuật ngữ) giữa cơ sở dữ liệu quan
hệ và cơ sở dữ liệu MongoDB:
Cơ sở dữ liệu quan hệ
|
MongoDB
|
Database
|
Database
|
Table
|
Collection
|
Row
|
Document (BSON document)
|
Index
|
Index
|
Join
|
$lookup
|
Foreign Key
|
Reference
|
Vậy, để lưu dữ liệu bằng MongoDB cần thực hiện các bước sau:
– Tạo một cơ sở dữ liệu (database), ví dụ: QuanLySinhVien
– Trong cơ sở dữ liệu, tạo các collection (bảng dữ liệu) để
lưu thông tin, ví dụ SinhVien
– Trong collection, tạo các document (tạo các hàng dữ liệu
cho bảng), ví dụ các BSON document
Ví dụ collection SinhVien:
{ name: "Tèo", age: 20 } //BSON document
{ name: "Tí", age: 21 } //BSON document
{ name: "Mùi", age: 22 } //BSON document
1.2.4
MongoDB Atlas
MongoDB Atlas là hệ quản trị cơ sở dữ liệu MongoDB trực tuyến
(cloud database), dùng để lưu trữ cơ sở dữ liệu và cung cấp các tính năng giúp sử
dụng và quản trị cơ sở dữ liệu.
Vào trang của MongoDB: https://www.mongodb.com/cloud/atlas
Bấm nút Start free để tạo một tài khoản miễn phí. (legiacong@gmail.com/p@ssword1)
Việc đầu tiên là tạo một cluster (hiểu là cài đặt/hay tạo một
database server): bấm Create a cluster, để các lựa chọn là mặc định, bấm Create
Cluster.
Tạo các tài khoản người dùng được phép truy cập và sử dụng
database server:
– Ở khung bên trái, mục SECURITY, chọn Database Access
– Ở khung bên phải, chọn Add New Database User, tạo một tài
khoản (user1/p@ssword1), bấm Add User để tạo.
Cho phép các IP nào được truy cập tới cơ sở dữ liệu:
– Ở khung bên trái, mục SECURITY, chọn Network Access
– Ở khung bên phải, chọn Add IP Address, chọn chế độ cho
phép truy cập từ mọi địa chỉ IP, bấm vào mục ALLOW ACCESS FROM ANYWHERE, bấm Confirm.
Lấy chuỗi kết nối tới database server:
– Ở khung bên trái, bấm vào mục Clusters
– Ở khung bên phải, chọn Cluster0, bấm vào nút CONNECT, chọn
tiếp Connect your application, chọn Copy. Lưu chuỗi kết nối này về máy cục bộ để
sau này sử dụng. Bấm Close để hoàn thành. Ví dụ: mongodb+srv://user1:<password>@cluster0-bgmrz.mongodb.net/test?retryWrites=true&w=majority
-----
Cập nhật: [24/10/2020]
-----
Xem thêm: MERN (2) - Nodejs, JavaScript cho MERN
Xem thêm: Danh sách bài học
Xem thêm: Danh sách bài học