12/08/2018, 16:31

Sử dụng MySQL với Node JS Express

Xin chào các bạn, như lần trước mình đã giới thiệu cho các bạn directive dndLists trong angular và sử dụng nó để tạo ra một bản KANBAN. Các bạn có thể xem lại bài viết đó tại đây nếu như các bạn chưa biết. Hôm nay mình sẽ tiếp tục viết bài về việc sử dụng MySQL trong NodeJS Express. Cài thư viện ...

Xin chào các bạn, như lần trước mình đã giới thiệu cho các bạn directive dndLists trong angular và sử dụng nó để tạo ra một bản KANBAN. Các bạn có thể xem lại bài viết đó tại đây nếu như các bạn chưa biết. Hôm nay mình sẽ tiếp tục viết bài về việc sử dụng MySQL trong NodeJS Express.

Cài thư viện và init project

Về phần init project và cài thư viện, các bạn có thể xem chi tiết ở bài viết trên nhé. Chúng ta sẽ chạy các lệnh sau:

npm init
npm install express --save
npm install mysql --save

Bắt đầu code

Đầu tiền, chúng ta cần tạo một file script server.js hay tên gì bất kì, với nội dung như sau:

var express = require('express');
var app = express();
app.listen(3000,function(){
    console.log('Node server running @ http://localhost:3000')
});

Sau đó mở lại terminal và gõ lệnh node server.js (server.js chính là tên file của các bạn nhé). Nếu như log trên terminal có nội dung là "Node server running @ http://localhost:3000", có nghĩa là mọi thứ đang OK rồi đấy. Các bạn có thể thay đổi port ở trên nếu bị trùng nhé!

Tiếp theo, chúng ta sẽ kết nối với database nhé. Đầu tiên, chúng ta thêm dòng code này vào nhé:

var mysql = require('mysql');

Tiếp theo chúng ta sẽ tạo kết nối với MySQL bằng những dòng lên sau:

var con = mysql.createConnection({
  host: "localhost",
  user: "your_user",
  password: "your_password",
  database: "your_database"
});

Để kiểm tra xem, chúng ta có kết nối với database được hay không, bạn có thể sử dụng đoạn lệnh sau:

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!!!")
});

Mở terminal và chạy lại node server.js, sau đó check log là "Connected" hay một đống lỗi nhé :kiss_mm:.

Bây giờ chúng ta sẽ tạo một database trong đó bao gồm một bảng tasks gồm các field như id, name, label nhé. Các bạn cũng có thể tạo giả vài record trong bảng này.

Bây giờ chúng ta sẽ truy vấn đến bảng tasks vừa tạo để lấy các record trong đó qua đoạn lệnh sau:

con.connect(function(err) {
  if (err) throw err;
  var sql = "SELECT * FROM tasks";
  con.query(sql, function(err, results) {
    if (err) throw err;
    console.log(results);
  })
});

Bây giờ chạy lại node server.js và cùng xem dữ liệu log ở terminal có giống với dữ liệu trong database mà bạn vừa tạo không nhé :kiss_mm:.

Việc lấy data đã xong, bây giờ chúng ta sẽ hiển thị những data đó ra view xem nhé. Hãy tạo trong thư mục một file html, ví dụ như home.html. Sau đó quay lại file server.js để tạo một route mới bằng đoạn code sau:

app.get('/public/home.html', function (req, res) {
  var sql = "SELECT * FROM tasks";
  con.query(sql, function(err, results) {
    if (err) throw err;
    res.send(results);
  });
});

Ở đây, mình tạo một thư mục public để chứa file home.html, nên trong route mình sẽ khai báo như vậy. Cụ thể hơn, route này sẽ có method là GET, và sau khi thực hiện truy vấn nó sẽ trả về kết quả lấy được từ database và hiển thị lên trang home.html. Dưới đây là đoạn code full của mình nhé

var mysql = require('mysql');
var express = require('express');
var app = express();
app.listen(3000,function(){
    console.log('Node server running @ http://localhost:3000')
});
var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "123456",
  database: "mydb"
});

app.get('/public/home.html', function (req, res) {
  var sql = "SELECT * FROM tasks";
  con.query(sql, function(err, results) {
    if (err) throw err;
    res.send(results);
  });
});

Cuối cùng, các bạn mở terminal lên và chạy node server.js, sau đó mở trình duyệt, truy cập vào http://localhost:3000/public/home.html (lưu ý chỉnh port, và đường dẫn đến file home.html nhé) và xem kết quả.

Trên đây, chỉ là một ví dụ cơ bản và vô cùng đơn giản về việc lấy dữ liệu từ database trong NodeJS, nếu có dịp mình sẽ viết thêm về cách hiển thị ra view kết hợp với bảng KANBAN ở bài trước và thực hiện các thao tác CRUD nhé! Cảm ơn các bạn đã tham khảo bài viết này :kiss_mm:.

0