Tạo model, migration, seeds với Sequelize

Tram Ho

sequelize là gì

Sequelize là một ORM Node.js hỗ trợ liên kết với các database như Postgres, MySQL, MariaDB, SQLite và Microsoft SQL Server. Trong bài viết này mình sẽ cùng các bạn tạo model, migrations và seed với sequelize-cli. Bắt đầu thôi nào ?

Cài đặt

trước hết chúng ta cần phải cài đặt sequelize, mình dùng yarn để cài sequelize nếu bạn nào chưa cài yarn thì có thể xem ở đây https://classic.yarnpkg.com/en/docs/install/#debian-stable.

1 Cài đặt sequelize:

2 Cài hệ quản trị cở sở dữ liệu:

ở đây mình sử dụng mysql, các bạn có thể sử dụng các hệ quản trị cơ sở dữ liệu khác như sau :

3 Cài sequelize-cli:

Tiếp theo chúng ta sẽ tạo Project với lệnh

Chạy lệnh trên sẽ tạo ra 4 folders như sau :

  • config: chứa file caais hình cho CLI biết cách kết nối với cơ sở dữ liệu.
  • migrations: chứa tất cả các file migration.
  • models: chứa tất cả các model của project
  • seeder: chứa tất cả các file seeds

Trước khi tạo model chúng ta cần phải cấu hình lại một chút để CLI biết cách kết nối với cơ sở dữ liệu, bằng cách mở file: config.js/config

Bạn cần thay đổi username với password sao cho đúng với username password trong hệ quản trị cơ sở dữ liệu của bạn. Một số lưu ý nhỏ là diaclect Sequelize CLI mặc định là mysql vì thế khi bản sử dụng hệ cơ sở dữ liệu khác bạn cần phải đổi lại cho phù hợp, nếu bạn chưa tạo cơ sở dữ liệu thì bạn cần chạy thêm lệnh sequelize db:create để tạo cơ sở dữ liệu được chỉ định trong file config.js. Được rồi bây giờ chúng ta sẽ bắt đầu tạo migration luôn nhé ?

Tạo Model (và Migration)

Chúng ta chỉ cần chạy lệnh:

Ở đây chúng ta chỉ cần chú ý đến :

  • name: tên của model
  • attributes: danh sách các thuộc tính

Ở trên sau khi chạy lệnh sẽ tạo ra 1 model có tên là Contact với thuộc tính là realName, address trong thư mục model, và một file 20200305015249-create-contact.js trong thư mục migration
Đây là file contact.js:

Ở đây tôi có thêm các attributes như là phone,brithhday

Tương tự tôi cũng tạo thêm một model nữa có tên là Event. Ở đây tôi xác định mối quan hệ giữa EventContact1-n vì thế chúng ta cần khai báo trong phần Contact.associate tôi phải xét quan hệ cho nó với EventbelongTo với khóa ngoại là eventId. Tương tự bên Event tôi cũng có :

Tiếp theo là chạy migration:

Chạy Migration

Chạy migration với lệnh :

Lệnh này sẽ thực thi các bước :

  • Gọi đến bảng SequelizeMeta trong cơ sở dữ liệu, bảng này có nhiêm vụ lưu lại những migration đã chạy trên cơ sở dữ liệu hiện tại
  • Tiếp theo là tìm kiếm các file trong mucj migration nào chưa được chạy nhờ vào bảng SequelizeMeta ở trên và chạy chúng
  • Cuối cùng là tạo ra một bảng có tên và các thuộc tính như trong file migration

Tạo seed

Để tạo seed chúng ta chạy câu lệnh :

ở lệnh trên tôi đã tạo ra một seed có tên là seed-event vào bảng Event. bây giờ hãy vào thư mục seeders để chỉnh sửa nó nhé ?))

Đây là file seed sau khi đã chỉnh sửa. việc còn lại là chạy nó lên thôi ?)))

chạy seed

Để chạy seed chúng ta chỉ cần thực hiện lệnh

Lệnh này sẽ thực thi tất cả các seed. Có một lưu ý nhỏ đó là seeder không giống migration đó là lịch sử thực hiện của nó không được lưu lại vì thế bạn muốn thay đổi seed thì chỉ cần vào file chỉnh sửa rồi chạy lại là được còn đối với migration khi bạn muốn thực hiện thay đổi thì bạn cần phải tạo một file migration mới.

kết luận

Vậy là mình đã cùng các bạn thực hiện cài đặt sequelize và tạo model, migration, với seed , ở bài biết này mình mới chỉ thực hiện tạo mà chưa sử dụng các lệnh undo, và tạo seed bằng tay chưa sử dụng facker, tạo nhiều record cho một bảng. vì thế các bạn hãy ủng hộ mình để mình có thêm động lực ra phần tiếp theo nhé ?. Bài viết còn nhiều thiếu xót rất mong được sự đóng góp của mọi người, mọi thắc mắc các bạn vui lòng comments bên dưới để mình và mọi người cùng giải đáp nhé. Cảm ơn các bạn đã đón đọc.

Tài liệu tham khảo :

https://sequelize.org/master/manual/migrations.html

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo