Cách kết nối nhiều cơ sở dữ liệu động trong mysql và nút js

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

  1. Knex là gì?
  2. Kết nối với cơ sở dữ liệu
  3. Thiết lập dữ liệu di chuyển và hạt giống
  4. 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à

  1. hỗ trợ xây dựng lược đồ tốt
  2. nhóm hỗ trợ giao dịch và kết nối
  3. dễ dàng điền dữ liệu độc lập với các tệp di chuyển
  4. dễ dàng di chuyển cơ sở dữ liệu trong một dòng lệnh
  5. thân thiện với những lời hứa vì tôi sử dụng asyncawait

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 knexsqlite3 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

kết nối với sqlite qua 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ì async0, người ta có thể cung cấp tham số cấu hình async1 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à async2 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 async3

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 async4 vì không tìm thấy lệnh. Bạn nên sử dụng async5. 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 async6 để 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, async7 và async8

  1. async7 đã được gọi khi bạn chạy await0 để chạy lần di chuyển tiếp theo chưa được chạy
  2. async8 được gọi khi bạn chạy await2 để 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 await3

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 await4 để 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ẫu

Nếu không có await5 nào được xác định, các tệp sẽ được tạo trong await6. 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à async7 và async8. bạn có thể hiểu rằng

  • async7 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ể
  • async8 là để hoàn nguyên thay đổi từ phương pháp async7

Đầu tiên, mình sẽ tạo 3 bảng mới user, role, user_status trong phương thức async7 và thả chúng vào phương thức async8 để hoàn nguyên thay đổi

các tệp di chuyển mẫu đã tạo 3 bảng mới

Sau đó, chúng ta có thể chạy nó bằng cách sử dụng lệnh này await0 để kích hoạt phương thức async7

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ẫu

Như 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 knex6 để 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 đỡ

Có thể kết nối đồng thời với nhiều cơ sở dữ liệu không?

Một trong số ít công cụ hỗ trợ các sản phẩm cơ sở dữ liệu không đồng nhất là Navicat Premium. Hơn nữa, nó có thể kết nối đồng thời với cơ sở dữ liệu MySQL, MariaDB, MongoDB, SQL Server, Oracle, PostgreSQL và SQLite từ một ứng dụng duy nhất .

Bạn sẽ kết nối cơ sở dữ liệu trong Nodejs như thế nào?

Cài đặt trình điều khiển MySQL .
C. \Users\Tên của bạn>npm cài đặt mysql
var mysql = yêu cầu('mysql');
Chạy "demo_db_connection. js" C. \Users\Tên của bạn>nút demo_db_connection. js
kết nối
lừa đảo. kết nối (chức năng (err) { if (err) ném err; bảng điều khiển. log("Đã kết nối. " ); con. truy vấn (sql, hàm (err, kết quả) { if (err) ném err;

Làm cách nào để kết nối Nodejs và thể hiện trong MySQL?

Kết nối MySQL với Node JS. .
Mở máy chủ web Express
Thêm dữ liệu cấu hình cho cơ sở dữ liệu MySQL hiện có
Mở một phần tiếp theo
Trong phần tiếp theo, hãy tạo một mô hình hướng dẫn
Viết bộ điều khiển
Xác định tất cả các tuyến để xử lý từng chức năng CRUD
mở người đưa thư
Kiểm tra API REST CRUD

Chúng tôi có thể kết nối hai cơ sở dữ liệu trong một ứng dụng không?

Nó không chỉ hỗ trợ hầu hết các Hệ thống quản lý cơ sở dữ liệu (DBMS) chính, mà còn nó là một trong số ít công cụ có thể kết nối đồng thời với tất cả chúng cùng một lúc!