×

Cài đặt thư viện Knex.js trong JavaScript

Knex.js là một query builder mạnh mẽ dành cho PostgreSQL, MySQL, SQLite3, và các cơ sở dữ liệu khác trong Node.js. Knex.js giúp chúng ta dễ dàng tương tác với các cơ sở dữ liệu thông qua code JavaScript, tạo ra các truy vấn SQL đọc dễ dàng và bảo trì tốt hơn. Trong bài viết này, chúng ta sẽ tìm hiểu cách cài đặt và sử dụng thư viện Knex.js trong dự án JavaScript của bạn.

1. Knex.js là gì?

Knex.js là một thư viện query builder được thiết kế để làm cho việc tương tác với cơ sở dữ liệu trong Node.js trở nên dễ dàng hơn. Cụ thể, Knex.js cung cấp các phương thức tiện lợi để tạo ra các truy vấn SQL, thực hiện các tác vụ trên cơ sở dữ liệu như truy vấn, thêm, cập nhật và xóa dữ liệu. Điều đặc biệt là Knex.js hỗ trợ nhiều cơ sở dữ liệu khác nhau bao gồm PostgreSQL, MySQL, SQLite3, và nhiều cơ sở dữ liệu khác.

1.1 Lợi ích của việc sử dụng Knex.js

  • Đa nền tảng cơ sở dữ liệu: Knex.js hỗ trợ nhiều loại cơ sở dữ liệu khác nhau, giúp bạn dễ dàng thay đổi cơ sở dữ liệu mà không cần thay đổi nhiều trong mã nguồn SQL.
  • Cú pháp dễ đọc, dễ hiểu: Knex.js cung cấp cú pháp tương tự như ngôn ngữ JavaScript, giúp mã nguồn dễ đọc, dễ bảo trì.
  • Hỗ trợ migration: Thư viện Knex.js cho phép bạn quản lý các thay đổi trong cấu trúc cơ sở dữ liệu thông qua migration.
  • Promise & callback API: Knex.js hỗ trợ cả hai nên bạn có thể chọn cách viết mã theo phong cách yêu thích của mình.

2. Cài đặt Knex.js

2.1 Yêu cầu hệ thống

Để cài đặt Knex.js, bạn cần có Node.js và npm (Node Package Manager) được cài đặt trên hệ thống của mình. Nếu bạn chưa cài đặt Node.js, bạn có thể tải về và cài đặt từ trang chủ Node.js nodejs.org.

2.2 Tạo dự án mới

Sử dụng lệnh sau để khởi tạo một dự án Node.js mới:

mkdir my-knex-project
cd my-knex-project
npm init -y

2.3 Cài đặt Knex.js và Database Client

Tiếp theo, bạn cần cài đặt Knex.js và client tương ứng với cơ sở dữ liệu mà bạn muốn sử dụng. Ví dụ dưới đây sẽ hướng dẫn cài đặt Knex.js với PostgreSQL:

npm install knex pg

Nếu bạn sử dụng cơ sở dữ liệu khác, thay pg bằng tên của client đó như sau:

  • MySQL: npm install knex mysql
  • SQLite3: npm install knex sqlite3
  • MSSQL: npm install knex mssql

3. Cấu hình Knex.js

Tiếp theo chúng ta cần cấu hình Knex.js để kết nối với cơ sở dữ liệu. Tạo một tập tin knexfile.js trong thư mục gốc của dự án và thêm vào nội dung như sau:

module.exports = {
  development: {
    client: 'pg', // Thay đổi thành client phù hợp với cơ sở dữ liệu của bạn
    connection: {
      host: '127.0.0.1',
      user: 'your_database_user',
      password: 'your_database_password',
      database: 'your_database_name'
    }
  }
};

Hãy chắc chắn rằng bạn đã cập nhật các thông tin kết nối với cơ sở dữ liệu của mình (host, user, password và database).

4. Sử dụng Knex.js trong Dự án

4.1 Khởi tạo Knex

Tạo một tập tin db.js để khởi tạo kết nối với cơ sở dữ liệu thông qua Knex.js:

const knex = require('knex');
const config = require('./knexfile');

const db = knex(config.development);

module.exports = db;

4.2 Thực hiện Truy vấn Cơ bản với Knex.js

4.2.1 Thêm Dữ liệu

Giả sử chúng ta có một bảng users, chúng ta có thể thêm một người dùng mới vào bảng này như sau:

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

db('users').insert({ name: 'John Doe', email: 'johndoe@example.com' })
  .then(() => {
    console.log('User added successfully');
  })
  .catch(err => {
    console.error('Error adding user:', err);
  });

4.2.2 Truy vấn Dữ liệu

Lấy tất cả người dùng trong bảng users:

db('users').select('*')
  .then(users => {
    console.log('Users:', users);
  })
  .catch(err => {
    console.error('Error fetching users:', err);
  });

4.2.3 Cập nhật Dữ liệu

Cập nhật email của người dùng có id là 1:

db('users').where('id', 1).update({ email: 'newemail@example.com' })
  .then(() => {
    console.log('User updated successfully');
  })
  .catch(err => {
    console.error('Error updating user:', err);
  });

4.2.4 Xóa Dữ liệu

Xóa người dùng có id là 1:

db('users').where('id', 1).del()
  .then(() => {
    console.log('User deleted successfully');
  })
  .catch(err => {
    console.error('Error deleting user:', err);
  });

5. Quản lý Migration với Knex.js

Migration giúp bạn theo dõi các thay đổi trong cấu trúc cơ sở dữ liệu của mình. Knex.js cung cấp công cụ mạnh mẽ để tạo và quản lý migration một cách dễ dàng.

5.1 Tạo Migration

Sử dụng lệnh sau để tạo một migration mới:

npx knex migrate:make create_users_table

Điều này sẽ tạo một tập tin migration trong thư mục migrations. Mở tập tin này và thêm vào nội dung để tạo bảng users:

exports.up = function(knex) {
  return knex.schema.createTable('users', function(table) {
    table.increments('id');
    table.string('name');
    table.string('email');
    table.timestamps();
  });
};

exports.down = function(knex) {
  return knex.schema.dropTable('users');
};

5.2 Thực hiện Migration

Sau khi tạo migration, bạn có thể chạy nó bằng lệnh sau:

npx knex migrate:latest

Lệnh này sẽ thực hiện tất cả các migration chưa được chạy trên cơ sở dữ liệu.

5.3 Rollback Migration

Nếu cần thiết, bạn có thể rollback migration để hoàn tác các thay đổi:

npx knex migrate:rollback

6. Kết luận

Trong bài viết này, chúng ta đã tìm hiểu cách cài đặt và sử dụng Knex.js để tương tác với cơ sở dữ liệu trong dự án Node.js. Knex.js mang lại rất nhiều lợi ích như đa nền tảng cơ sở dữ liệu, cú pháp dễ đọc, và hỗ trợ migration. Với những kiến thức này, bạn có thể bắt đầu xây dựng các ứng dụng Node.js mạnh mẽ với các tính năng cơ sở dữ liệu phức tạp một cách dễ dàng.

Chúc các bạn thành công với dự án của mình!

Comments