Một cú pháp cho nhiều cơ sở dữ liệu, thực hiện di chuyển SQL và tạo dữ liệu giống như một PRO trong ứng dụng Nút
Ảnh của Alex trên Bapt
Trong bài viết này, tôi sẽ chia sẻ các phương pháp mà tôi đang sử dụng để làm việc với cơ sở dữ liệu. Công cụ chính chúng tôi sẽ sử dụng là Knex
Hãy xem bài viết trước của tôi để biết nơi tôi đang sử dụng Knex với dự án Node
Ngừng sử dụng nút khởi động. js và xây dựng dự án của riêng bạn
Bài viết này dựa trên cách tôi thiết lập back-end trang web cá nhân của mình bằng cách sử dụng expressjs vì tôi muốn chuyển tất cả API từ…
lên cấp. gitconnected. com
Đây là nội dung của bài viết này
- Knex là gì?
- Kết nối với cơ sở dữ liệu
- Thiết lập dữ liệu di chuyển và hạt giống
- Triển khai dữ liệu di chuyển và hạt giống
Để biết thêm nội dung như thế này, hãy xem https. //betterfullstack. com
Knex là gì?
Knex. js là trình tạo truy vấn SQL “bao gồm pin” dành cho Postgres, MSSQL, MySQL, MariaDB, SQLite3, Oracle và Amazon Redshift được thiết kế để trở nên linh hoạt, di động và thú vị khi sử dụng
Điều tôi thích nhất sau khi sử dụng thư viện này sau 2 dự án là
- hỗ trợ xây dựng lược đồ tốt
- nhóm hỗ trợ giao dịch và kết nối
- dễ dàng điền dữ liệu độc lập với các tệp di chuyển
- dễ dàng di chuyển cơ sở dữ liệu trong một dòng lệnh
- thân thiện với những lời hứa vì tôi sử dụng
async
vàawait
Kết nối với cơ sở dữ liệu
Để sử dụng knex, bạn phải cài đặt thư viện trước
npm i knex
Và tùy thuộc vào cơ sở dữ liệu bạn đang sử dụng, hãy cài đặt đúng thư viện
$ npm install pg
$ npm install sqlite3
$ npm install mysql
$ npm install mysql2
$ npm install oracledb
$ npm install mssql
Ghi chú. pg
dành cho PostgreSQL
Đầu tiên, tôi sẽ cài đặt knex
và sqlite3
vì tôi thích làm việc với sqlite3 hơn cho các dự án nhỏ để tiết kiệm tiền cho máy chủ cơ sở dữ liệu
Cài đặt knex và sqlite3 bằng npm
Thứ hai, tôi sẽ thiết lập kết nối tới cơ sở dữ liệu của mình bằng cách sử dụng knex
Tôi đã thêm useNullAsDefault: true
vì sqlite3 không hỗ trợ chèn giá trị mặc định. Và trong tài liệu
Nếu một người thích rằng các khóa không xác định được thay thế bằng
NULL
thay vìasync
0, người ta có thể cung cấp tham số cấu hìnhasync
1 trong cấu hình knex
Thêm db mới. js với cấu hình cơ sở dữ liệu
Làm thế nào về thời gian mặc định nhóm kết nối?
Nhóm kết nối có cài đặt mặc định là async
2 cho thư viện MySQL và PG và một kết nối duy nhất cho sqlite3
Bạn có thể kiểm soát nó bằng cách thêm async
3
Thiết lập dữ liệu di chuyển và hạt giống
Di chuyển cho phép bạn xác định tập hợp các thay đổi lược đồ và làm cho việc thay đổi cơ sở dữ liệu trở nên dễ dàng. Điều đó có nghĩa là bạn sẽ tạo bảng dữ liệu của mình và cập nhật bất kỳ thay đổi nào từ đây
Trước khi bắt đầu tạo di chuyển, trước tiên chúng ta cần tạo knexfile vì quá trình di chuyển sử dụng knexfile để chỉ định các cài đặt cấu hình khác nhau khi bạn chạy di chuyển
chạy knex init để tạo knexfile. js
Môi trường mặc định là môi trường phát triển và bạn có thể cập nhật phần còn lại cho môi trường dàn dựng và sản xuất
Ghi chú. Bạn không thể chạy trực tiếp async
4 vì không tìm thấy lệnh. Bạn nên sử dụng async
5. Xem hình trên
Tạo một tệp di chuyển
Bước tiếp theo, tạo tệp di chuyển bằng cách chạy async
6 để tạo tệp di chuyển
tạo tệp di chuyển có tên ứng dụng. js
Điều này sẽ tạo ra một tệp có 2 phương thức bên trong, async
7 và async
8
async
7 đã được gọi khi bạn chạyawait
0 để chạy lần di chuyển tiếp theo chưa được chạyasync
8 được gọi khi bạn chạyawait
2 để hoàn tác lần di chuyển cuối cùng đã chạy
Ghi chú. Để liệt kê cả quá trình di chuyển đã hoàn thành và đang chờ xử lý, bạn có thể chạy await
3
Tạo dữ liệu hạt giống
Các tệp hạt giống cho phép bạn điền vào cơ sở dữ liệu của mình dữ liệu thử nghiệm hoặc hạt giống độc lập với các tệp di chuyển của bạn
Chạy await
4 để tạo tệp hạt giống
Các tệp hạt giống được tạo trong thư mục được chỉ định trong knexfile của bạn. js cho môi trường hiện tại. Một cấu hình hạt giống mẫu trông giống như
cấu hình hạt mẫuNếu không có await
5 nào được xác định, các tệp sẽ được tạo trong await
6. Lưu ý rằng thư mục hạt giống cần phải là một đường dẫn tương đối. Đường dẫn tuyệt đối không được hỗ trợ
Tạo tập tin hạt giống
Thực hiện di chuyển và dữ liệu hạt giống
Trong phần này, tôi sẽ thêm một số mã vào tệp di chuyển và tệp hạt giống để thêm một số bảng demo và dữ liệu hạt giống mẫu
Ghi chú. Tôi tạo cái này khá nhanh để minh họa cách triển khai tệp di chuyển và dữ liệu gốc. Bạn nên thay đổi và thích ứng với tình hình dự án thực tế của bạn
Tệp di chuyển
Trong file migration có 2 phương thức là async
7 và async
8. bạn có thể hiểu rằng
async
7 dùng để thực hiện di chuyển hoặc thay đổi cơ sở dữ liệu của bạn, chẳng hạn như thêm bảng mới, cột mới vào một bảng cụ thểasync
8 là để hoàn nguyên thay đổi từ phương phápasync
7
Đầu tiên, mình sẽ tạo 3 bảng mới user, role, user_status trong phương thức async
7 và thả chúng vào phương thức async
8 để hoàn nguyên thay đổi
Sau đó, chúng ta có thể chạy nó bằng cách sử dụng lệnh này await
0 để kích hoạt phương thức async
7
chạy di chuyển với môi trường mặc định
Bây giờ, bạn có thể thấy rằng điều này sẽ tạo một bảng cho bạn
Bảng đã được tạo sau khi chạy di chuyển npx knex. lên
ĐÃ XONG cho lần di chuyển đầu tiên. Từ bây giờ, bất kỳ thay đổi nào bạn có thể tạo phiên bản di chuyển mới và chạy nó
Ghi chú. Khi bạn triển khai sang UAT và Sản xuất, bạn cần chỉ định môi trường khi chạy di chuyển. lên
Bây giờ, hãy chuyển sang phần tiếp theo để thêm một số dữ liệu đầu tiên cho các bảng mới của bạn
Tạo dữ liệu Seed
Khi bạn khởi tạo table mới, ban đầu bạn sẽ cần một số dữ liệu ban đầu để nó chạy ứng dụng của bạn hay bạn có thể hiểu seed data là dữ liệu bắt buộc cần để chạy các tính năng mới của bạn
Đây là dữ liệu hạt giống mẫu
dữ liệu hạt giống mẫuNhư bạn có thể thấy mẫu ở trên, tôi có
- đối với người dùng, tôi tạo người dùng quản trị đầu tiên với tên người dùng và mật khẩu
- khởi tạo dữ liệu cho bảng role và user_status
Tiếp theo, chạy npm i knex
6 để thêm dữ liệu
chạy tệp hạt giống bằng npx knex seed. chạy lệnh
Cuối cùng, tôi đã tạo một số dữ liệu gốc cho ứng dụng của mình
Dữ liệu được tạo cho bảng vai trò với 4 vai trò mặc định
Ghi chú. Bạn có thể tạo nhiều tên tệp hạt giống khác nhau và chạy tên tệp đó mỗi khi triển khai. Reed thêm tài liệu ở đây
Cảm ơn đã dành thời gian để đọc bài viết của tôi
Sự kết luận
Trong bài viết này, tôi tập trung vào cách xử lý di chuyển cơ sở dữ liệu và tạo dữ liệu hạt giống với thư viện knex
Tháng này và tháng sau mình sẽ viết nhiều hơn về Node. js nếu bạn thấy bài viết này hữu ích. Bạn có thể theo dõi tôi trên Medium. Tôi cũng ở trên Twitter. Hãy để lại bất kỳ câu hỏi trong các ý kiến dưới đây. Tôi rất sẵn lòng giúp đỡ