Nội dung bài viết
Video học lập trình mỗi ngày
Mysql nodejs thêm Expressjs là một kết hợp hoàn hảo để chúng ta có thể tạo dựng cho mình một blogs nhanh chóng. Mở rộng hơn về kết hợp này thì những lập trình viên có thể sử dụng những công cụ này để có thể phát triển cơ sở hạ tầng để phát triển một REST ful dành cho nhiều ứng dụng.
Trong bài viết này tôi sẽ hướng dẫn cho các bạn cách connect mysql nodejs một cách hiện đại thông qua async-await. Hy vọng bài viết này sẽ giúp các bạn có một cách connect ngắn gọn và có thể sử dụng linh hoạt hơn cách cũ đó là callback.
Yêu cầu người đọc Mysql Nodejs:
- Hiểu biết về nodejs, install...
- Hiểu biết về mysql, install...
- Hiểu biết về sự khác biệt giữa callback và promise
Connect mysql nodejs
Trước tiên, thỉnh thoảng tôi vẫn bắt gặp một số example trên github hay ở đâu đó, điều đó có nghĩa rằng, đó chỉ là một hướng dẫn cơ bản cho nhưng bạn lập trình nhập môn. Hoặc nói rõ hơn là dành cho những bạn tập làm quen với nodejs khi làm việc với cơ sở dữ liệu, và cách đó thường gọi là callback. Bạn có thể nhìn code một cách rõ hơn về cách connect sử dụng callback.
npm i -S mysql
Sau khi cài đặt mysql, chúng ta có thể viết mã cơ bản để kết nối với cơ sở dữ liệu và sau đó lấy một số dữ liệu từ một bảng. Nó có thể được viết như sau:
const mysql = require('mysql'); // Get the Host from Environment or use default const host = process.env.DB_HOST || 'localhost'; // Get the User for DB from Environment or use default const user = process.env.DB_USER || 'root'; // Get the Password for DB from Environment or use default const password = process.env.DB_PASS || ''; // Get the Database from Environment or use default const database = process.env.DB_DATABASE || 'twitter_clone'; // Create the connection with required details const con = mysql.createConnection({ host, user, password, database, }); const query = "SELECT * FROM tweets"; // make to connection to the database. con.connect(function(err) { if (err) throw err; // if connection is successful con.query(query, (err, result, fields) => { // if any error while executing above query, throw error if (err) throw err; // if there is no error, you have the result console.log(result); }); });
Qua ví dụ trên các bạn có thể thấy việc sử dụng callback rất dài dòng, ở đây tôi không có ý định chê bai callback nhưng ở một số trường hợp như thế này việc sử dụng callback nên tránh.
Do đó, tôi sẽ hướng dẫn cho các bạn convert từ callback sang async-await.
Khi bạn đọc đến đây tôi share cho các bạn một hướng dẫn về cách convert callback to async-await in nodejs. Bạn có thể tìm đọc lại bài đó.
Và bây giờ chúng ta sang một code mới đó là sử dụng async-await
Nodejs mysql async/await
Nodejs connect database mysql bạn có thể thấy đấy, khi search từ khoá này trên google thì sẽ có nhiều phương án và kết qủa, chứng tỏ nhiều devjs vẫn đang tìm cách này. bắt đầu nhé.
Chút nữa thì quên, ở đây là chỉ nói về Mysql Nodejs, nếu bạn đang quan tâm về mongodb nodejs thì có thể đọc bài viết này: Find mongoose - sử dụng async await thay thế cho callback.
Nhưng hay chú ý đến những sai lầm khi sử dụng async-await đấy.
// connect const mysql = require('mysql'); module.exports = async (params) => new Promise( (resolve, reject) => { const connection = mysql.createConnection(params); connection.connect(error => { if (error) { reject(error); return; } resolve(connection); }) });
Ở những dòng code trên bạn có thể sử dụng chúng để lấy một connect. Ở đầu bài tôi có nói về yêu cầu những người đọc bài viết này. Nên không giải thích nhiều ở đây.
// query module.exports = async (conn, q, params) => new Promise( (resolve, reject) => { const handler = (error, result) => { if (error) { reject(error); return; } resolve(result); } conn.query(q, params, handler); });
Nodejs mysql async/await: Cách sử dụng
const express = require('express') const dbConfig = require('./dbConfig'); // ↑ exports = {user, password, host, databse} const connection = require('./helpers/connection'); const query = require('./helpers/query'); const app = express() const port = 3000; app.get('/', (req, res) => res.send('Hello World!')) app.get('/list', async (req, res) => { const conn = await connection(dbConfig).catch(e => {}) const results = await query(conn, 'SELECT * FROM tweets').catch(console.log); res.json({ results }); }) app.listen(port, () => console.log(`Example app listening on port ${port}!`))
Như vậy là hướng dẫn này nhanh và gọn nhưng đủ tinh tế danh cho các bạn muốn tìm hiểu nhiều hơn về Connect MySql.