Sequelize CLI: Migration, Seeder, Model Cho Node
Sequelize CLI là công cụ dòng lệnh đi kèm Sequelize ORM, xử lý migration, seeder, và scaffold model qua các lệnh như db:migrate và model:generate. Nó không làm được gì mà bản thân Sequelize không thể làm qua script viết tay, nhưng nó biến các thay đổi schema thành các file có thứ tự, revert được thay vì SQL viết ngẫu hứng. Hãy dùng ngay khi bạn đã chạy Sequelize và có nhiều người cùng đụng vào schema; bỏ qua nếu bạn không dùng ORM Sequelize.
Quản Lý Database Với Sequelize CLI
Sequelize CLI là công cụ dòng lệnh cho Node.js, phát hành dưới dạng package npm sequelize-cli, được xây để đi kèm một dự án Sequelize ORM có sẵn thay vì thay thế bất kỳ phần nào của nó. Sau khi cài như dev dependency, nó cung cấp các lệnh qua binary sequelize để tạo và chạy migration, seed dữ liệu, generate model, và khởi tạo cấu trúc thư mục config/migrations/seeders mà Sequelize cần.
Các Thao Tác Database Cốt Lõi
- ✓Các lệnh vòng đời migration — db:migrate áp dụng các migration đang chờ, db:migrate:status liệt kê trạng thái của chúng, còn db:migrate:undo / db:migrate:undo:all lùi lại một hoặc toàn bộ migration.
- ✓Các lệnh seeder đi song song với migration: db:seed chạy một seeder cụ thể, db:seed:all chạy mọi seeder, còn db:seed:undo / db:seed:undo:all xoá dữ liệu đã seed.
- ✓db:create và db:drop tạo hoặc xoá database được đặt tên trong cấu hình Sequelize của dự án.
- ✓migration:generate (alias migration:create) và seed:generate (alias seed:create) scaffold file migration và seed mới, có gắn timestamp.
- ✓model:generate (alias model:create) viết cả model definition lẫn file migration tương ứng chỉ trong một lệnh.
- ✓init, init:config, init:migrations, init:models, và init:seeders scaffold file config và cấu trúc thư mục cho một dự án mới, từng phần một.
- ✓db:migrate:schema:timestamps:add là lệnh tiện ích dùng một lần để cập nhật bảng migration cũ cho có thêm timestamp.
Khi Nào Nên Dùng CLI Này
- •Một team đã dùng Sequelize cần migration được review và merge qua pull request thay vì ai đó chạy lệnh ALTER thô bằng tay.
- •Seed một database development hoặc CI mới với dữ liệu nền qua db:seed:all ngay sau db:migrate, không cần viết script SQL fixture riêng.
- •Scaffold một model mới mà file migration cần tồn tại ngay từ commit đầu tiên — model:generate viết cả hai cùng lúc.
- •Rollback một migration lỗi bằng db:migrate:undo thay vì viết script đảo ngược thủ công.
Bắt Đầu Với Sequelize CLI
Sequelize CLI được cài như dev dependency của dự án: npm install --save-dev sequelize-cli. Điều kiện tiên quyết duy nhất theo README là Sequelize đã được cài trong dự án — CLI vận hành trên một setup Sequelize có sẵn thay vì tự khởi tạo ORM giúp bạn. Sau khi cài, npx sequelize --help liệt kê các lệnh khả dụng và xác nhận CLI đã được kết nối đúng.
Các Lệnh CLI Thường Dùng
Các lệnh chạy qua npx sequelize <command>. sequelize init dựng cấu trúc config, migrations, seeders, và models của dự án trong một lần; bốn lệnh con init: (config, migrations, models, seeders) làm từng phần riêng lẻ. sequelize migration:generate (alias migration:create) và sequelize model:generate (alias model:create) tạo file migration và model mới — model:generate còn viết luôn migration khớp với model đó. Khi đã có file migration, sequelize db:migrate áp dụng mọi migration đang chờ, sequelize db:migrate:status báo cáo migration nào đã áp dụng, còn sequelize db:migrate:undo hoặc db:migrate:undo:all lùi lại một hoặc toàn bộ migration. Seeder theo cùng mô hình: sequelize seed:generate tạo file seed, sequelize db:seed:all chạy mọi seeder, và db:seed:undo:all đảo ngược chúng. Help output của CLI in ra version của chính nó cùng version Node và Sequelize ORM đang cài — ví dụ trong README cho thấy Node 10.21.0, CLI 6.0.0, ORM 6.1.0, dù version thực tế sẽ khác nhau tuỳ dự án.
Điểm mạnh
- ✓Lệnh migration và seeder đối xứng nhau — apply/status/undo/undo:all cho migration, run/all/undo/undo:all cho seeder — nên tư duy dùng cái này áp dụng được sang cái kia mà không cần học lại bộ động từ khác.
- ✓model:generate tiết kiệm một bước bằng cách viết file model và migration tương ứng cùng lúc, thay vì viết tay cả hai.
- ✓db:migrate:undo và db:migrate:undo:all cho một đường rollback được tài liệu hoá, không chỉ migration một chiều tiến tới.
- ✓Giấy phép MIT, nên không có rào cản pháp lý khi thêm nó làm dev dependency.
- ✓Các lệnh con init: cho phép scaffold riêng file config hoặc riêng thư mục migrations thay vì phải chấp nhận toàn bộ layout init cùng lúc.
Hạn Chế Cần Lưu Ý
- △README ghi tên các lệnh nhưng không mô tả đầy đủ flag hay option của chúng — tham số cho migration:generate, model:generate, hay cách override config không được nêu trực tiếp, chỉ được dẫn tới docs/README.md và tài liệu CLI Options.
- △Sequelize CLI chỉ có ích khi dự án đã chạy Sequelize ORM; đây không phải công cụ migration độc lập hay tổng quát cho query builder hay ORM khác.
- △Ví dụ usage trong chính README gắn với các version cụ thể (Node 10.21.0, CLI 6.0.0, ORM 6.1.0) mà không kèm changelog hay lịch sử version, nên chỉ dựa vào README này thì không thể xác nhận đã thay đổi gì kể từ đó.
- △Tài liệu chi tiết hơn — hướng dẫn migration, CLI options, FAQ — nằm ngoài README, trong docs/README.md, docs/FAQ.md, và trang chủ Sequelize, nên bản thân README không phải tài liệu tham khảo đầy đủ.
Các Công Cụ Migration Database Khác
Câu Hỏi Thường Gặp Về Sequelize CLI
Sequelize CLI tồn tại để chạy các tác vụ database hàng ngày mà một dự án Sequelize ORM cần — tạo và áp dụng migration, seed dữ liệu, scaffold model và config — tất cả từ dòng lệnh thay vì script tự viết.
Các lệnh chính của Sequelize CLI gồm migration (db:migrate, db:migrate:undo, db:migrate:status), seeder (db:seed:all, db:seed:undo:all), tạo database (db:create, db:drop), và các lệnh generate cho migration, model, và file seed.
Cài Sequelize CLI như dev dependency bằng npm install --save-dev sequelize-cli trong một dự án đã có Sequelize, sau đó chạy npx sequelize --help để xác nhận đã kết nối đúng.
Sequelize CLI được phát hành theo giấy phép MIT, theo repository GitHub của nó.
Sequelize CLI yêu cầu Sequelize ORM phải được cài sẵn trong dự án; README liệt kê đây là điều kiện tiên quyết trước khi cài CLI.
Trong Sequelize CLI, migration thay đổi cấu trúc schema (db:migrate, db:migrate:undo) còn seeder thêm hoặc xoá dữ liệu (db:seed:all, db:seed:undo:all) — cả hai đều được generate, theo dõi, và revert theo cùng cách nhưng tác động lên cấu trúc khác với dữ liệu.
Vấn đề mà Sequelize CLI giải quyết
Sequelize (ORM) định nghĩa model bằng JavaScript, nhưng bản thân package ORM không có gì biến một thay đổi model thành một file mà hai đồng đội có thể áp dụng theo cùng thứ tự. Sequelize CLI tồn tại chính để lấp khoảng trống đó: nó generate file migration và seed có gắn timestamp, theo dõi migration nào đã chạy trên một database cụ thể, và cho mọi môi trường — laptop, CI, production — cùng một lệnh, db:migrate, để đưa schema lên hiện trạng mới nhất.
Ai nên dùng — và ai nên bỏ qua
Hãy dùng Sequelize CLI nếu dự án đã chạy Sequelize ORM và có nhiều người cùng đụng vào schema — các cặp lệnh migration/seed và scaffold của model:generate đáng giá khi có chi phí phối hợp đó. Bỏ qua nếu dự án không dùng Sequelize, vì CLI không có tác dụng gì nếu thiếu ORM bên dưới, hoặc nếu chỉ một developer chỉnh database bằng tay mà không cần file migration có version.
Repo liên quan
Vẫn đang phân vân về cli?
Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về cli.
