Hey! Mình là HQ Khánh. Nay mình lại tiếp tục lên đây chém gió cùng anh em. Tháng trước là một seri về an toàn thông tin, nên tháng này mình sẽ cùng ae tìm hiểu về "thằng" khác nhé.
Tầm này năm ngoái mình là một intern nodejs. Được học và làm theo chủ đề anh hướng dẫn đưa ra như jwt, passport, sequelize, docker,.......Toàn những thứ dùng để làm trong dự án. Trong đó có sequelize khá hay nên nay mình sẽ tìm hiểu về nó nhé. À kể thêm các ae, lúc đầu mình xin anh làm mongodb, vì lúc ý mình làm nodejs hay dùng mongo, nhưng anh bảo cứ làm sql cho anh, làm backend thì nên biết cả sql và nosql, haha, vậy là học thôi! Sau mình lại toàn dùng nó, "nghiện luôn", haha.
Vậy sequelize là gì? Sequelize là một ORM ( Object Relational Mapping ) dành cho Node.js. Nó hỗ trợ liên kết với các database như Mysql, Postgres, MariaDB, SQLite, ...
- Cài đặt thôi nào!
npm install --save sequelize
- Mình dùng mysql nhé.
npm install --save mysql2
À cài thêm thằng sequelize-cli nữa: npm install --save sequelize-cli
Giờ khởi tạo thôi: npx sequelize init
Giờ project của mình sẽ có bố cục như sau:
- config: chứa config.
- migrations: chứa các file migration.
- models: chứa các models.
- seeds: chứa các file seeds.
Đầu tiên mình sẽ chỉnh sửa file config để kết nối với db.
Mình sẽ phải thay đổi username, password, database thành của mình. Cái freezeTableName mình đặt là true để đặt tên bảng trong db là số ít. Ví dụ User thì sẽ thành user thôi. Mặc định nó sẽ thành users.
Cái connection pool thì mình hay cài đặt như kia. max: số lượng kết nối tối đa, min: số lượng kết nối tối thiểu,....Các bạn vào đây để thêm các tùy chọn mà mình muốn nhé:
Đã kết nối được với database. Giờ tạo model và migration thôi.
Trước khi tạo, xem thằng sequelize giúp được mình những gì nào?
npx sequelize
Ồ khá nhiều lệnh hữu ích!
Muốn tạo models, migration, anh em chạy cho mình cái lệnh này.
npx sequelize model:create --name [ten_model] --attributes [ten_attr]:[datatype_attr]
Nếu bạn muốn nhiều attributes thì cứ viết thêm, cách nhau bởi dấu phẩy.
Do mình muốn tự vào models, migrations để sửa và thêm attributes theo ý của mình nên mình chỉ tạo 1 attributes tượng trưng thôi, haha
Chạy như hình là đã thành công rồi nhé. Giờ tự tay vào chỉnh sửa theo ý của mình thôi.
Mình sẽ sửa file migrations trước.
Chạy như hình là đã thành công rồi nhé. Giờ tự tay vào chỉnh sửa theo ý của mình thôi.
Uây! Lâu mình không dùng, phiên bản v6 ( mới nhất thời điểm này ) có cả async, await luôn cơ, nhìn hơi lạ, haha...
Giờ bê nguyên sang models thôi.
Ây da. Model v6 thì khác nhiều hơn tẹo. Xưa mình dùng v4, mà lúc ý v5 cũng phát hành rồi..( một năm thôi, công nghệ thay đổi liên tục, học liên tục, hahaha...)
Cái thằng models quan trọng đó, hồi mình phải vọc vạch rất nhiều đó, nhất các mối quan hệ, sau dùng nhiều thì quen, cái khu associate để ae định nghĩa các mối quan hệ nhé.
Giờ chạy thôi.
npx sequelize db:migrate
Ok. Chạy xong là mình sẽ có bảng user trên db nhé.
Fake data thôi. Tại sao phải fake, vì mình sẽ phải test, mà test cần data, mà chẳng nhẽ 1 dự án, khi pull từ git về chạy thì mỗi người lại phải add data à ( mất thời gian ) nên sinh ra thằng seeds. ( Nếu ae có db trên amazon thì ngon, có thể không cần thằng này, hihi...)
Tạo seeds thôi.
npx sequelize-cli seed:generate --name user
Lệnh này sẽ giúp anh em tạo file seed.
Giờ vào thêm data thôi.
File seed v6 cũng lạ quá nhỉ, async, await đàng hoàng. Ae muốn thấy v4, v5 nó như thế nào thì nhìn ảnh dưới.Giờ chạy file seed thôi.npx sequelize-cli db:seed:allChạy như thế này thì ok rồi nhé! Vào check data thôi.Kết luận: Data đã có trong db rồi nhé! Như vậy mình đã cùng các bạn tìm hiểu thằng sequelize, tạo models, migration và seeds trong nodejs, sequelize thật sự rất hữu ích, sau nó giúp chúng ta rất nhiều như query,....
Nếu các bạn có ý kiến hay câu hỏi gì hãy bình luận bên dưới nhé. Cảm ơn các bạn đã đọc blog của mình.!
0 Comment: