Hướng dẫn express mongodb rest api - express mongodb còn lại api

Hì, trước giờ toàn xem ké, học free hoài nên hôm nay cũng viết một bài rồi chia sẽ với mọi người để mọi người ném đá mà rút kinh nghiệm... hì bài này mình viết ở https://mrsoi.com rồi chuyển qua nên có thể có một số từ hay một số câu cú không hợp với viblo của mình thì mọi người góp ý nha..

Hướng dẫn express mongodb rest api - express mongodb còn lại api
hì bài này mình viết ở https://mrsoi.com rồi chuyển qua nên có thể có một số từ hay một số câu cú không hợp với viblo của mình thì mọi người góp ý nha..

Dựng một API RESTful đơn giản sử dụng Express và MongoDB là bài đầu tiên của blog này của mình... Hì, build ra cái blog rồi để gần tuần mới viết bài đầu tiên thì chắc Khoản là người đầu tiên.. Hì, thật ra thì đang tìm ý tưởng viết thôi... :V :V Mà thôi, bỏ qua vấn đề đó mình sẽ vào vấn đề chính là dựng một API RESTful về quản lý người dùng sử dụng Node nha.. ))

Hướng dẫn express mongodb rest api - express mongodb còn lại api
))

1. Tạo ứng dụng và cài Dependencies cần thiết:

Kiểm tra nodejs và npm version:

npm -v
#6.0.1
node -v
#v10.1.0

1.1 Khởi tạo ứng dụng:

Tạo thư mục và di chuyển vào thư mục.

mkdir user-api
cd user-api

Khởi tạo project nodejs:

npm init -y

Hướng dẫn express mongodb rest api - express mongodb còn lại api

1.2 Cài dependence cần thiết:

Đầu tiên tất nhiên là express để khởi tạo server rồi phải không nào, để tìm hiểu thêm về express các bạn có thể lên trang document chính chủ của nó để tìm hiểu, mình chỉ trình bày sơ qua một số thứ để có thể xây dựng được API thôi.

npm install express --save

Tiếp theo là cài mongoose, và mongoose-auto-increment, một cái giúp kết nối với cơ sở dữ liệu và cái còn lại thì giúp tạo khóa tự động tăng..

npm install mongoose mongoose-auto-increment --save

Cuối cùng là body-parser thần thánh để xử lý request cũng như response dạng json cho express:

npm install body-parser --save

2. Khởi tạo server và kết nối với database.

2.1 Khởi tạo server:

Tạo một file server.js trong thư mục project. và require mấy cái dependence vừa ném cài vào, sau đó mở cổng kết nối server bằng express. Code thì kiểu như thế này:

const express = require('express');
const bodyParser = require('body-parser')

const app = express();
const PORT = process.env.PORT || 5000;

app.use(bodyParser.json())

app.listen(PORT, () => console.log(`Listening on ${ PORT }`));

app.get('/', (req, res) => {
    res.send(`Listening on ${ PORT }`);
})

Sau đó chạy server bằng node server.js và lên trình duyệt mở được như thế này là thành công:

Hướng dẫn express mongodb rest api - express mongodb còn lại api

2.2 Kết nối server với mLab /utils/db.js:

Thử tạo một thư mục có tên là utils và tạo một file có tên là db.js nha. ( Đây là cá nhân mình thích tách chức năng nhỏ ra các file nhỏ thôi. )

Nội dung file kết nối database db.js sẽ có nội dung tương tự như thế này:

var mongoose = require('mongoose');

const mlabURI = 'mongodb://huynhduckhoan::29560/user-api'
const dbName = 'user-api';

const con = mongoose.connect(mlabURI, (error) => {
	if(error){
		console.log("Error " + error);
	}else{
		console.log("Connected successfully to server")
	}
});

module.exports = con;

Thêm một đoạn để nhận kết quả kết nối cơ sở dữ liệu vào server.js

const db = require('./utils/db');

Chạy lại project thì thấy giống như hình là oke.. ))

Hướng dẫn express mongodb rest api - express mongodb còn lại api
))

Hướng dẫn express mongodb rest api - express mongodb còn lại api

Xong mấy bước căn bản rồi đấy, vui lên đi nào.. :V :V

3. Tạo model user:  /models/user.js

Một model schema thì của mongoose thì có nội dung tương tự như thế này:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const db = require('../utils/db');
const autoIncrement = require('mongoose-auto-increment');

var userSchema = new Schema({
    userID: {
        type: Number, 
        required: true, 
        unique: true},
    email: {
        type: String, 
        required: true, 
        unique: true},
    password: { 
        type: String, 
        required: true },
    role:  { 
        type: String, 
        required: true,
        default: 'user'},
	dateAdded : { type: Date, default: Date.now },
})

const User = mongoose.model('User', userSchema);
autoIncrement.initialize(mongoose.connection);
userSchema.plugin(autoIncrement.plugin, { model: 'User', field: 'userID' });

module.exports = {
    User
};

đọc code cũng khá là dễ hiểu nên mình không nói gì cho dài thêm bài viết, nếu có thì có đoạn tự động tăng cho userID là đáng nói :

mkdir user-api
cd user-api
0

Ở đây, autoIncrement sẽ phải kết nối với mongodb để nếu như userID trong request của client không có thì sẽ tự động chọn một số để tăng lên.

Còn đoạn này sẽ lấy thời gian bây giờ ( Tức lúc thêm )  làm ngày thêm cho user.

mkdir user-api
cd user-api
1

4. Khởi tạo express router:

Về cơ bản thì router của user nó sẽ có như thế này:

RouteHTTP VerbDescription
/user GET Nhận tất cả thông tin user
/user GET Nhận tất cả thông tin user
POST GET Nhận tất cả thông tin user
POST thêm một user /user/:userID
POST thêm một user /user/:userID

Lấy thông tin của user có userID

mkdir user-api
cd user-api
2

PUT

Hướng dẫn express mongodb rest api - express mongodb còn lại api
)) Vì code mongoose khá là dễ hiểu nên mình hướng dẫn cụ thế mà chỉ hướng dẫn đơn giản một lần như như thế. Bạn nào cần có thế lên trang chủ document của mongoose mà tìm hiểu thêm..
Hướng dẫn express mongodb rest api - express mongodb còn lại api
))

mkdir user-api
cd user-api
3
mkdir user-api
cd user-api
4
mkdir user-api
cd user-api
5
mkdir user-api
cd user-api
6

Cập nhật thông tin user có userID

Hướng dẫn express mongodb rest api - express mongodb còn lại api

Hướng dẫn express mongodb rest api - express mongodb còn lại api

Hướng dẫn express mongodb rest api - express mongodb còn lại api

DELETE

Hướng dẫn express mongodb rest api - express mongodb còn lại api
))

Xóa user có userID

Theo thứ tự mình sẽ lần lượt trình bày đống code có chức năng theo thứ tự nha: