Tài liệu api phần còn lại mongodb
Khi chúng tôi xây dựng ứng dụng Web hoặc các ứng dụng phía máy chủ, việc tạo RESTful API để tương tác với máy khách trở nên vô cùng phổ biến
Ở bài viết này, mình sẽ tạo RESTful API để hỗ trợ đủ 4 thao tác. CRUD (Tạo – Đọc – Cập nhật – Xóa)
Trước khi chúng ta vào bài viết, bạn nên chuẩn bị sẵn những yêu cầu sau
- Hiểu về RESTful APIs
- Cài đặt nút. JS
- Cài đặt MongoDB
OK, sau khi môi trường lập trình đã sẵn sàng, chúng ta bắt tay vào việc tạo RESTful API thôi

Nội dung chính của bài viết
- #Tạo API RESTful
- #Cấu hình nút. js với Express framework
- #Tương tác với MongoDB sử dụng Mongoose
- #Tạo RESTful API và xử lý hành động logic
- #Tổng kết
tạo RESTful API là một kiểu thiết kế ứng dụng trong đó quy định định dạng của địa chỉ URL và phương thức HTTP sử dụng để quản lý tài nguyên trên máy chủ
Tài nguyên trên Server trong bài viết này mình giả sử là danh sách người trong Database
Việc thiết kế REST cũng khá đơn giản, chúng ta sẽ định nghĩa 4 hàm xử lý 4 hành động
- Tạo tài nguyên mới (ví dụ thêm một người)
- Chỉnh sửa tài nguyên có sẵn (ví dụ: cập nhật thông tin của một người)
- Get the data of resource (xem thông tin của một người/hoặc nhiều người)
- Xoá tài nguyên (Xóa thông tin của một người)
Cụ thể trong bài viết này thì mình sẽ thiết kế như sau
#Cấu hình nút. js với Express framework
Để bắt đầu, chúng ta sẽ tạo một dự án mới với các phụ thuộc cần thiết. Từ cửa sổ lệnh, chúng ta thực hiện các lệnh sau
npm init -y
npm install express body-parser mongoose --save
Kết thúc các lệnh trên, chúng ta sẽ tạo một gói. json, và cài đặt ExpressJS, Mongoose và một gói hỗ trợ chuyển dữ liệu theo cách yêu cầu từ máy khách thành dữ liệu JSON
Để đơn giản, mình sẽ chọn tất cả mã nguồn vào một ứng dụng tệp. js. Tuy nhiên, điều này không được triển khai theo dự án thực tế nhé. Với dự án thực tế, các bạn nên áp dụng các quy tắc như nguyên lý RẮN để đảm bảo dự án sạch sẽ, dễ bảo trì
Bạn đã tạo tệp ứng dụng. js tại thư mục gốc của dự án
/**
* Son Duong
* https://vntalking.com
* June 14, 2019
*/
const Express = require("express");
const Mongoose = require("mongoose");
const BodyParser = require("body-parser");
var app = Express();
app.use(BodyParser.json());
app.use(BodyParser.urlencoded({ extended: true }));
// Define REST API
app.post("/person", async (request, response) => {});
app.get("/people", async (request, response) => {});
app.get("/person/:id", async (request, response) => {});
app.put("/person/:id", async (request, response) => {});
app.delete("/person/:id", async (request, response) => {});
app.listen(3000, () => {
console.log("Listening at :3000...");
});
Mình sẽ giải thích một chút về đoạn code trên. Đầu tiên, chúng ta cần yêu cầu những mô-đun cần thiết như. express, mongoose và body-parser
Tiếp theo, chúng ta sẽ định nghĩa API là thiết kế mục 2 ở trên bài viết. Chúng ta sẽ bổ sung logic xử lý cho từng hàm sau
Cuối cùng, chúng ta khai báo ứng dụng sẽ lắng nghe cổng 3000
#Tương tác với MongoDB sử dụng Mongoose
Để có thể kết nối được với MongoDB, bạn cần khai báo đúng đường dẫn
Mongoose.connect("mongodb://localhost/vntalking");
Trong đó vtalking là tên cơ sở dữ liệu (tương đương với tên cơ sở dữ liệu trong SQL vậy)
Lưu ý. Bài viết này mình tập trung vào các logic tương tác với MongoDB từ Nodejs. Do đó, mặc định mình sẽ xem các bạn đã biết cách tạo bộ sưu tập trong MongoDB. Nếu bạn muốn quản lý MongoDB một cách dễ dàng thì có thể sử dụng công cụ Robo3T
Sau khi cấu hình kết nối xong, mình sẽ tiến hành tạo mô hình. Trong khuôn khổ ví dụ của bài viết này, chúng ta chỉ cần tạo ra một mô hình như sau
const PersonModel = Mongoose.model("person", {
firstname: String,
lastname: String
});
Mô hình này sẽ tạo một bộ sưu tập người (tương đương với việc tạo một bảng trong SQL vậy). With each document will have 2 information. tên và họ
Ok, như vậy phần cấu hình với MongoDB đã hoàn tất, chúng ta tiến hành xử lý logic cho mỗi API
#Tạo RESTful API và xử lý hành động logic
Đầu tiên, chúng ta sẽ viết mã xử lý phần tạo mới cho một người
app.post("/person", async (request, response) => {
try {
var person = new PersonModel(request.body);
var result = await person.save();
response.send(result);
} catch (error) {
response.status(500).send(error);
}
});
Khi máy khách thực hiện một yêu cầu POST tới ứng dụng của chúng tôi. Chúng ta sẽ sử dụng PersonModel và JSON payload để lưu thông tin vào cơ sở dữ liệu
Có một điểm lưu ý, tất cả những công việc tương tác với cơ sở dữ liệu đều có thể kích hoạt thời gian và bạn cần phải sử dụng cơ chế xử lý bất đồng bộ. Trước kia bạn có thể sử dụng Promise, và giờ thì hiện đại hơn, sử dụng kỹ thuật mới async và await (Hỗ trợ từ javascript ES7)
Sau khi lưu dữ liệu thành công, chúng tôi sẽ trả lại kết quả cho khách hàng biết
Tiếp theo, khi đã có dữ liệu, chúng ta có thể lấy dữ liệu từ cơ sở dữ liệu
app.get("/people", async (request, response) => {
try {
var result = await PersonModel.find().exec();
response.send(result);
} catch (error) {
response.status(500).send(error);
}
});
Có hai kiểu dữ liệu. Một là lấy toàn bộ danh sách người có trong cơ sở dữ liệu, hai là lấy thông tin cụ thể của một người nào đó
Trong API kịch bản này, khi khách hàng không gửi bất kỳ điều kiện kỳ lạ nào, thì sẽ trả về một danh sách những người
Nếu khách hàng gửi cụ thể ID của một người nào đó, họ sẽ chỉ trả lại cho 1 người mà thôi. Thực hiện như sau
app.get("/person/:id", async (request, response) => {
try {
var person = await PersonModel.findById(request.params.id).exec();
response.send(person);
} catch (error) {
response.status(500).send(error);
}
});
Khi client gửi ID của người đó lên, chúng ta sẽ sử dụng hàm findById() để tìm kiếm trong cơ sở dữ liệu xem có người nào tương ứng với ID đó không. Nếu tồn tại người đó thì trả lại cho khách hàng
Hoàn toàn tương tự với việc cập nhật và xóa thông tin của một người khi biết ID
app.put("/person/:id", async (request, response) => {
try {
var person = await PersonModel.findById(request.params.id).exec();
person.set(request.body);
var result = await person.save();
response.send(result);
} catch (error) {
response.status(500).send(error);
}
});
app.delete("/person/:id", async (request, response) => {
try {
var result = await PersonModel.deleteOne({ _id: request.params.id }).exec();
response.send(result);
} catch (error) {
response.status(500).send(error);
}
});
Như vậy là chúng ta đã hoàn thành đủ 4 hành động như thiết kế ban đầu. Các bạn có thể kiểm tra ứng dụng bằng cách sử dụng Postman. Tất nhiên, đừng quên chạy ứng dụng trước khi kiểm tra trên máy chủ bằng lệnh sau
________số 8#Tổng kết
Qua bài viết, chúng ta đã biết cách tạo RESTful API đơn giản rồi phải không?
Trong bài viết này, mình đang sử dụng một framework để tạo API dễ dàng hơn, nếu có hứng thú, bạn có thể đọc thêm về ExpressJS framework này tại đây
- Xây dựng trang web dễ dàng với ExpressJS
Phần tiếp theo, mình sẽ cùng nhau tìm hiểu về những kỹ thuật khác của NodeJs như Promise, Event và Filestream
Bài Viết Liên Quan
Vladlen Tatarsky: Killing of pro-Kremlin blogger investigated as murder
Vladlen Tatarsky: Killing of pro-Kremlin blogger investigated as murder Published 4 hours ago Share close panel Share page Copy link About sharing Related Topics Russia-Ukraine war Image source, Vladlen Tatarsky Telegram Image caption, Vladlen Tatarsky posted reports on the Telegram messaging service By Laurence Peter and Olga Ivshina BBC News The killing of Russian military
Tại sao các thư mục tự đổi sang cmd
Đối với đại đa số người dùng PC, Windows Command Prompt là một ứng dụng tẻ nhạt và có phần khó hiểu với cửa sổ đen trắng làm nổi bật bởi những dòng code hỗn độn. Kiểm tra tình trạng của hệ thống mạng Tìm địa chỉ IP trang web Tăng tốc độ mạng bằng lệnh flushdns Sử dụng Ctrl-C để hủy bỏ một lệnh Command Xem kết quả lệnh trên trang (hoặc
Tai sao truyen son tinh thuy tinh la truyen thuyet
Tải app VietJack. Xem lời giải nhanh hơn! Đề bài: Theo em văn bản “Sơn Tinh Thủy Tinh” có thuộc thể loại truyền thuyết không? Vì sao? Trả lời: Quảng cáo Văn bản “Sơn Tinh Thủy Tinh” thuộc thể loại truyền thuyết vì: truyện dựa trên những yếu tố có thật trong lịch sử: đời vua Hùng thứ 18, và các chi tiết tượng tượng kì ảo được sáng tác thêm vào
Top 20 cửa hàng aasop Quận 3 Hồ Chí Minh 2022
Bài viết đánh giá Top 20 cửa hàng aasop Quận 3 Hồ Chí Minh 2022 theo quan điểm cá nhân của tác giả Nội dung chính Gấu Bông Cao Cấp Saigonso - CN Quận 3 Nam A Bank - Hội sở Tép Màu Quận 3 Tổng Công ty cấp nước Sài Gòn TNHH MTV P2P Bikini Center Shop Gạo Mầm Vibigaba | Gạo Phương Nam Nhẫn Cặp Bạc Cao Cấp HCM - HAS Há cảo giá sỉ Sửa Laptop Quận 3 Cửa hàng Gas Hướng
What is the purpose for doing percussion before palpation when assessing the abdomen?
Abdominal examination Abdominal examination The abdominal exam , in medicine, is performed as part of a physical examination, or when a patient presents with abdominal pain or a history that suggests an abdominal pathology Purpose[edit] Positioning and environment[edit] Inspection[edit] Auscultation[edit] Palpation[edit] Percussion[edit] Other tests and special maneuvers[edit] References[edit] External links[edit] Why
Top 17 cửa hàng 133 Huyện Tân Thạnh Long An 2022
Bài viết đánh giá Top 17 cửa hàng 133 Huyện Tân Thạnh Long An 2022 theo quan điểm cá nhân của tác giả Điện máy XANH Lạc Tấn Siêu thị Điện máy XANH Siêu thị Bách hóa XANH Khu phố 3 Bưu điện Tân Thạnh Bệnh viện Đa Khoa Tân Thạnh Công an huyện Tân Thạnh Agribank chi nhánh Tân Thạnh, Long an Trường THCS Tân Thành Điểm Giao Dịch VNPT VinaPhone Tân
Ngày 9 tháng 1 năm 2023 có phải là ngày nghỉ lễ ở kenya không
Trên đây là danh sách các ngày lễ năm 2023 được tuyên bố ở Kenya, bao gồm các ngày lễ của liên bang, chính quyền khu vực và các lễ kỷ niệm phổ biến. Chúng tôi cũng cung cấp lịch nghỉ lễ Kenya cho năm 2023 ở định dạng Word, Excel, PDF và có thể in trực tuyến Tháng Giêng 2023 tháng 4 năm 2023 tháng 5 năm 2023 tháng 6 năm 2023 tháng 10 năm 2023 tháng 12 năm 2023
530dm2 bằng bao nhiêu cm2
530 dm2=. . . . . cm2, 9 000 000m2=. . . . . . km2, 2110dm2=. . . . cm2, 500cm2=. . . . . . dm2, 12000kg=. . . . . tấn, 6000kg=. . . . . tạ, 2 yến=. . . . . . . kg, 5 tạ=. . . . . kg, 1 tấn =, . . . . . . kg phân số 5/9 bằng phân số nào dười đây? a)25/18 b)20/36 c)45/63 d)35/45 nếu quả táo nặng 50 kg thì cần bao nhiêu quả táo như thế thì được 4 kg? a)80 b) 50 c)40 d)20 diện
Tháng 3 năm 2022 có bao nhiêu ngày
Có thể bạn quan tâm IPhone 6 Plus chính hãng giá bao nhiêu? Tôi có thể xem các điểm nổi bật của Đấu giá IPL 2023 ở đâu? Shukla Paksha vào tháng 2 năm 2023 vào ngày nào? 1 cuốn thịt heo bao nhiêu calo? Chạy xe Grab Car thu nhập bao nhiêu? Xem ngày tốt tháng 12 năm 2021 chi tiết Lịch Âm Dương tháng 3 năm 2020 Chi tiết lịch âm dương tháng 3 năm 2020 Lịch âm
Tithi là gì vào ngày 6 tháng 2 năm 2023?
Janoi 01. Buổi sáng. tối đa 11. 29 giờ sáng Vastu-Kalash Ngày 6 tháng 2 năm 2023 có tốt không? Tháng 2 năm 2023 theo lịch Hindu là gì? Tithi là gì vào ngày 6 tháng 1 năm 2023? Tithi vào ngày 6 tháng 3 năm 2023 là gì? 02. Buổi trưa. Sau 12. 12 giờ đêm 06. Buổi trưa. Lên đến 15. 03 giờ chiều 10. Buổi sáng. Sau 8. 00 giờ sáng Kết hôn 01. Buổi sáng. Tối đa 11. 29 giờ
Cách làm giàn cho cà chua bị
Không gian sống đô thị thường nhỏ hẹp, có lẽ vì vậy mà một mảng xanh nhỏ giữa lòng đô thị ồn ào. Một giàn cà chua mọng đỏ trong không gian nhỏ hẹp trong nhà bạn. Tại sao không? Bằng cách này hay cách khác, không khó để có một góc cà chua trong sân nhà bằng nhiều cách trồng đơn giản nhưng thiết thực. 1. Trồng trong lồng Cây cà chua khỏe mạnh với các cành mảnh mai có thể lớn
Làm cách nào cho hoa mười giờ nở nhiều
Vào bếp Món ngon Cách trồng hoa Mười giờ ra NHIỀU hoa trong nhà rực rỡ By Thành Công - 3 Tháng Mười Hai, 2021 0 81 Facebook Twitter Pinterest WhatsApp Đánh giá post Cách trồng hoa mười giờ khá đơn giản, bởi hoa này dễ trồng, tốn ít công chăm sóc, hơn nữa lại nở quanh năm với sắc màu rực rỡ, hút hồn người qua lại. Nội dung chính
Hacklenen Facebook hesabımı nasıl şikayet edebilirim?
Saldırıya uğradıysanız ve Facebook hesabınız ele geçirildiyse, kendinizi ve hesabınızı korumak için yapmanız gereken birkaç şey var. Öncelikle şifrenizi hemen değiştirmelisiniz. İkinci olarak, hack'i Facebook'a bildirmelisiniz. Saldırıyı bildirmek, Facebook'un hesabınızı korumasına yardımcı olur ve bilgisayar korsanlarının hesabınıza erişmesini zorlaştırır. İçindekiler Show Facebook Hesabınızı Hacker Silinmesinden Koruyun Silinen ve
Cách chăm sóc cây sanh ôm đá
I. Tổng quan về cây Tên thường gọi: Cây Sanh Tên gọi khác: Cây Gừa Tàu Tên khoa học: Ficus benjamina L Họ thực vật: Moraceae (họ Dâu tằm) Nguồn gốc xuất xứ: Cây Sanh thường được tìm thấy ở các nước châu Á, đặc biệt là Đông Nam Á Nơi sống: Cây thường sống ở những nơi ẩm ướt như: Bờ sông, suối, cạnh khe nước. . Tuổi thọ: Cây sống rất lâu năm có thể lên
Nút nguồn tivi Casper ở đâu
Vào một ngày trời nắng nóng, bạn tìm cái điều khiển để bật máy điều hòa Casper chẳng thấy đâu khiến bạn càng thấy nóng và khó chịu. Nút nguồn điều hòa Casper ở đâu nhỉ? Bạn loay hoay mãi mà chẳng thấy đâu. Bài viết dưới đây của chúng tôi sẽ mách bạn nhận biết nút nguồn điều hòa Casper nhé. Bước 1: Mở lắp dàn lạnh Bước 2: Xác định vị trí
40 bài tập trắc nghiệm dòng điện xoay chiều mức độ 3 vận dụng
50 bài tập Ôn tập chương 3: Dòng điện xoay chiều mức độ vận dụng cao Quảng cáo 50 bài tập Ôn tập chương 3: Dòng điện xoay chiều mức độ vận dụng (Phần 1) Quảng cáo Có thể bạn quan tâm Tiền thập phân vào ngày 31 tháng 3 năm 2023 là gì? Từ các số 1, 2, 3, 4, 5, 6, 7 lập được bao nhiêu số tự nhiên có 6 chữ số Sự kiện ngày 5 tháng
Chuyển khoản nhầm bao lâu trả lại vietcombank
Phải làm gì khi chuyển tiền nhầm tài khoản Vietcombank? Chuyển khoản nhầm có lấy lại tiền được không? Tất cả sẽ được giải đáp Rất nhiều khách hàng khi chuyển tiền bất cẩn, hoặc sơ suất chuyển tiền nhầm tài khoản Vietcombank . Trường hợp này, bạn hoan toàn có thể liên hệ với ngân hàng để được gaiir quyết và hướng dẫn quy trỉnh lấy lại tiền đã chuyển nhầm.
Chuyển phát từ anh về việt nam mất bao lâu
Phí chuyển hàng từ Anh về Việt Nam có đắt không là điều mà nhiều người quan tâm khi có nhu cầu vận chuyển hàng hóa bằng đường hàng không. Nhu cầu xuất nhập, vận chuyển hàng hoá giữa 2 nước Anh và Việt Nam là điều thiết yếu. 1. Tại sao cần tìm hiểu cước phí vận chuyển hàng từ Anh về Việt Nam? 1. 1 Yêu cầu đối với hàng hóa vận chuyển
Како преместити домен у Схопифи
Ако размишљате да преместите своје пословање на Схопифи, прво морате да знате неколико ствари. Ево четири савета који ће вам помоћи да тај потез учините што глаткијим 1. Набавите Схопифи план који одговара вашем пословању Пре него што чак и помислите да преместите своју
Chuyển khoản từ vietcombank sang vpbank mất bao lâu
Chuyển tiền liên ngân hàng mất bao lâu là câu hỏi của phần lớn khách hàng có nhu cầu chuyển tiền. Có ngân hàng chỉ mất 10-15 phút để chuyển tiền. Nhưng có ngân hàng phải mất tới tận 3 ngày tiền mới về tài khoản. Vậy làm thế nào để tránh gặp rắc rối về thời gian chuyển tiền? Gutina sẽ cũng các bạn tìm hiểu thời gian chuyển tiền của các ngân hàng phổ biến của Việt Nam.