Connect NodeJS Express FW and DB SQL Server
Heyyo lại là mình đây. Hôm nay mình sẽ hướng dẫn các bạn cách kết nối back-end Nodejs sử dụng Express frameword với DB là SQL Server. SQL Server thì không phải bàn rồi, nó được ưu tiên khởi đầu ở các trường nên rất được đông đảo các bạn sinh viên biết đến. Thường thì với Nodejs back-end người ta nghĩ ngay đến Database là MongoDB cho phù hợp với MERN (MongoDB, Expressjs, React, Nodejs) hay MEAN (MongoDB, Expressjs, Angular, Nodejs) Stack, nhưng với từng nhu cầu của dự án mà ta có thể chọn một loại DB phù hợp
Oke bắt đầu thôi !
Phần SQL Server
Trước tiên ta cần enable TCP/IP protocol của SQL Server bằng cách mở Sql Server Configuration
Để việc enable này được apply ta cần restart lại Service SQL Server (Right Click >> Restart)
Ta đặt một PORT mặc định cho TCP/IP Protocol (Right Click >> Properties). Ở đây là 1433 do Driver SQL Server phía back-end sử dụng PORT này
Sau bước này, ta cần Restart lại Service SQL Server tương tự bước trên.
Đây là các thiết lập cứng cho SQL Server
Ta mở SQL Server lên và Connect tới DB như bình thường. Ở bước này ta cần thay đổi phương thức xác thực từ Windows Authentication mode sang SQL Server and Windows Authentication mode
Tiếp theo ta cần tạo một tài khoản login để xác thực đăng nhập vào SQL và phân quyền cho tài khoản này (Right Click >> New >>Login)
Tab Server Roles
Tab User Mapping. Ở đây mình chọn DB là Covid19 (Gồm 1 table duy nhất là Articles)
Tab Securebles
Ở đây mình chỉ DEMO cho các bạn nên mình set quyền của Account này là cao nhất. Trường hợp dự án của các bạn như thế nào thì set roles sao cho hợp lý nhé
Oke thế là ta tạo thành công một tài khoản Login. Thử đăng nhập vào bằng tài khoản vừa tạo nhé
Nếu thành công thì ta đã hoàn thành phần config SQL rồi đấy
Phần Back-end Express JS
Khởi đầu một dự án với
npm init
Tiếp theo ta cần install module express
và driver mssql
npm install express mssql --save
Ta tạo một file server.js với nội dung như sau
const express = require('express');
const sql = require("mssql");
const PORT = process.env.PORT || 8080
const app = express();
app.get('/api/articles', function (req, res) {
// config DB
var config = {
user: 'pa_nqt', // Thay thông tin đăng nhập của tài khoản vừa tạo
password: '**********', // Password
server: 'localhost', // Ở đây mình đặt DB trên localhost
database: 'Covid19', // Chổ này thay bằng DB name của bạn
options: {
enableArithAbort: true,
encrypt: true
}
};
// connect database
sql.connect(config, function (err) {
if (err){
console.log(err);
}
// create Request object
var request = new sql.Request();
// query to the DB
request.query('SELECT * FROM Articles', function (err, recordDataSet) {
if (err){
console.log(err);
}
// send records as a response
res.send(recordDataSet);
});
});
});
var server = app.listen(PORT, () => console.log(`Server is starting at port ${PORT}`));
Phía server mình tạo 1 route duy nhất là /api/articles đế trả về data khi thực hiện một câu truy vấn nào đó
Start Server
node server.js
Sang browser kiểm tra kết quả
Tada... không quá khó khăn đúng không nè
Chúc các bạn thành công !
Github: https://github.com/Nguyen-Quoc-Thai/express-sql-connection
Writer: Quốc Thái
Nhận xét
Đăng nhận xét