JavaScript có thể truy cập cơ sở dữ liệu MySQL không?

MySQL là một trong những cơ sở dữ liệu được sử dụng rộng rãi nhất trên web. Bạn có thể truy cập cơ sở dữ liệu này với hầu hết các ngôn ngữ lập trình chính. Kết nối của nút. js sang MySQL có thể được thực hiện thông qua trình điều khiển cơ sở dữ liệu đặc biệt

 

MySQL đã chứng tỏ mình là một cơ sở dữ liệu trong nhiều năm, ngay cả trong các ứng dụng rất lớn. Hệ thống không chỉ có một thành phần máy chủ đơn giản mà còn cho phép bạn chạy cơ sở dữ liệu trên nhiều máy chủ theo cấu trúc hỗn hợp chính-phụ. Lợi ích của việc này là bạn có thể phân phối các yêu cầu trên một số hệ thống và do đó đảm bảo khả năng phục hồi

 

Ngoài ra, đối với khối lượng dữ liệu rất lớn, cơ sở dữ liệu có thể được phân vùng và phân phối trên nhiều hệ thống, điều này mang lại nhiều cơ hội hơn nữa về mặt cải thiện hiệu suất. MySQL có nhiều tính năng hữu ích khác, bao gồm các trình kích hoạt (các chức năng được thực thi khi thực hiện một số thao tác nhất định) và các giao dịch. giao dịch là một nhóm các hoạt động chỉ có thể được thực hiện toàn bộ hoặc không thực hiện được.

 

Một ưu điểm khác của MySQL là cơ sở dữ liệu này có sẵn trên một số lượng lớn các hệ điều hành khác nhau, chẳng hạn như Linux, Windows và macOS. Tính khả dụng và việc sử dụng rộng rãi đã dẫn đến một cộng đồng rất tích cực mà bạn có thể liên hệ nếu có bất kỳ câu hỏi hoặc vấn đề nào. Ngoài ra còn có các nhánh của MySQL, chẳng hạn như MariaDB, cung cấp chức năng tương tự

 

Một trong những nhược điểm của MySQL là nó không thể theo kịp các cơ sở dữ liệu SQL lớn như Oracle hoặc DB2 về bộ tính năng của nó. Tuy nhiên, sự phát triển tiên tiến của cơ sở dữ liệu ngày càng bù đắp cho nhược điểm này

 

Nói chung, có hai cách tiếp cận khác nhau để kết nối với cơ sở dữ liệu MySQL. Đối với một điều, có một trình điều khiển trực tiếp thực hiện giao thức MySQL và được viết hoàn toàn bằng JavaScript. Không cần phần mềm nào khác cho trình điều khiển này và nó có thể được sử dụng trực tiếp để làm việc với cơ sở dữ liệu

 

Một biến thể khác của trình điều khiển MySQL dựa trên các thư viện máy khách MySQL. Chúng có ưu điểm là hiệu suất cao hơn một chút so với các trình điều khiển được triển khai hoàn toàn bằng JavaScript. Tuy nhiên, chúng có nhược điểm là phải cài đặt các thư viện MySQL client trên hệ thống chạy Node. ứng dụng js

 

MySQL trong một Container

Bạn không cần cài đặt MySQL trên hệ thống phát triển của mình. Đặc biệt để thử nghiệm, chạy cơ sở dữ liệu trong vùng chứa là một giải pháp thay thế khả thi. Nhưng các bộ chứa cũng đang ngày càng trở nên phổ biến đối với các hoạt động phát triển hàng ngày, vì cách tiếp cận này cho phép cả cấu hình được chia sẻ giữa các hệ thống của nhà phát triển và cấu hình bộ chứa được tạo phiên bản cùng với phần còn lại của mã nguồn ứng dụng. Bạn có thể khởi chạy bộ chứa MySQL bằng lệnh hiển thị bên dưới

 

docker run

--name mysql

-v db-data:/etc/mysql/conf.d

-e MYSQL_ROOT_PASSWORD=topSecret

-e MYSQL_ROOT_HOST=% -p 3306:3306

-d

mysql:latest

 

Lệnh docker run tạo vùng chứa mới từ hình ảnh có tên mysql. mới nhất. Hình ảnh mysql được cung cấp chính thức bởi MySQL trên Docker Hub (https. // trung tâm. người đóng tàu. com/), được tải xuống bằng lệnh trong phiên bản đã chỉ định—tại đây . mới nhất—nghĩa là phiên bản mới nhất. Tùy chọn --name gán tên cho vùng chứa để vùng chứa dễ quản lý hơn và không cần phải xử lý bằng ID của vùng chứa. Bạn có thể sử dụng tùy chọn -v để chỉ định rằng một thư mục cục bộ được gắn dưới dạng một ổ đĩa trong vùng chứa, để các tệp cơ sở dữ liệu được đặt trên máy chủ . Tùy chọn -e tiếp theo đặt các biến môi trường cho vùng chứa mà MySQL sử dụng trong trường hợp này để đặt root < . Cuối cùng, bạn sử dụng password and allow the root user to log on from outside the container. Finally, you use -d để chỉ định rằng vùng chứa sẽ chạy trong nền. Khi bạn thực hiện lệnh, kết quả là bạn sẽ nhận được một chuỗi ký tự khó hiểu. Đây là ID của vùng chứa mà bạn cũng có thể sử dụng để quản lý vùng chứa ngoài tên. Khi bạn đã khởi chạy bộ chứa, bạn có thể sử dụng MySQL trên hệ thống của mình.

 

Bảng bên dưới chứa thông tin tổng quan về các lệnh quan trọng nhất cho dòng lệnh Docker. Bạn có thể tìm thấy danh sách toàn diện về tất cả các lệnh, bao gồm cả mô tả và tất cả các tùy chọn có sẵn trong tài liệu chính thức tại https. // tài liệu. người đóng tàu. com/engine/reference/commandline/cli/.

 

JavaScript có thể truy cập cơ sở dữ liệu MySQL không?

 

Cài đặt

Trình điều khiển MySQL cho Node. js có sẵn dưới dạng mô-đun npm và có thể được cài đặt từ dòng lệnh bằng cách sử dụng lệnh npm install mysql2 . Trình điều khiển triển khai giao thức MySQL hoàn toàn bằng JavaScript , do đó, nó không yêu cầu bạn cài đặt bất kỳ thư viện bên ngoài nào khác hoặc thực hiện bất kỳ bước biên dịch nào trong quá trình cài đặt.

 

Sau khi cài đặt hoàn tất và bạn có sẵn cơ sở dữ liệu MySQL, bạn có thể truy cập cơ sở dữ liệu MySQL từ ứng dụng của mình

 

Cấu trúc cơ sở dữ liệu

Để tạo lại các ví dụ trong chương này, bạn cần một phiên bản đang chạy của cơ sở dữ liệu MySQL có cấu trúc dữ liệu để hoạt động trên đó. Danh sách bên dưới chứa các lệnh SQL bắt buộc để tạo cơ sở dữ liệu với hai bảng, Phim Xếp hạng, and to fill the database with initial values. Once you’ve executed these statements, you can start implementing the sample application in the next step. To create the structure, you must either use the mysql cục bộ trên bảng điều khiển của hệ thống hoặc nếu bạn đang chạy cơ sở dữ liệu trong < . Sau đó, bạn có thể thực hiện các câu lệnh được hiển thị bên dưới. Docker container, you should use the docker exec -it mysql mysql -p command to execute the mysql command in the container named mysql. Then you can execute the statements shown below.

 

CREATE DATABASE `movie-db`;

________số 8

CREATE TABLE `Movies` (

--name mysql0

--name mysql1

--name mysql2

--name mysql3

--name mysql4

--name mysql5

--name mysql6

--name mysql7

--name mysql8

 

Thiết lập kết nối

Trong bất kỳ ứng dụng nào sử dụng cơ sở dữ liệu, trước khi sử dụng cơ sở dữ liệu này, trước tiên phải thiết lập kết nối qua đó các lệnh được gửi đến hệ thống cơ sở dữ liệu và thông tin từ cơ sở dữ liệu có thể quay trở lại ứng dụng. Ứng dụng này dựa trên mã nguồn từ cuốn sách Node. js. Hướng dẫn toàn diện và nó sử dụng công cụ mẫu Pug. Kết nối cơ sở dữ liệu được thiết lập trong phim/mô hình. js tệp. Dưới đây cho thấy cách bạn có thể làm điều này trong mã nguồn.

 

--name mysql9

-v db-data:/etc/mysql/conf.d0

-v db-data:/etc/mysql/conf.d1

-v db-data:/etc/mysql/conf.d2

-v db-data:/etc/mysql/conf.d3

-v db-data:/etc/mysql/conf.d4

-v db-data:/etc/mysql/conf.d5

-v db-data:/etc/mysql/conf.d6

-v db-data:/etc/mysql/conf.d0

-v db-data:/etc/mysql/conf.d8

-v db-data:/etc/mysql/conf.d0

-e MYSQL_ROOT_PASSWORD=topSecret0

-e MYSQL_ROOT_PASSWORD=topSecret1

-e MYSQL_ROOT_PASSWORD=topSecret2

-e MYSQL_ROOT_PASSWORD=topSecret3

 

Sau khi bao gồm giao diện lời hứa của mysql2 mô-đun, bạn có thể sử dụng createConnection function to configure the connection and then use the connect method of the connection object to connect to the database. Much of the driver’s functionality in this case is based on promises. For the createConnection , nó trả về một đối tượng lời hứa mà bạn có thể đợi để giải quyết bằng cách sử dụng await keyword. You can also terminate an open connection by calling the end . Phương thức connect cũng trả về một đối tượng lời hứa. Bạn có thể sử dụng phương thức catch của đối tượng này để triển khai xử lý lỗi liên quan đến thiết lập kết nối. Ngoài ra, bạn có thể sử dụng từ khóa await và thực hiện xử lý lỗi bằng try-catch.

 

Kết nối cũng có thể được thiết lập hoàn toàn bằng cách gọi phương thức truy vấn trên đối tượng kết nối.

 

Đọc bản ghi dữ liệu

Vì bạn đã tạo một số bản ghi dữ liệu khi khởi tạo cơ sở dữ liệu nên bạn đã có thể đọc chúng. Để thực hiện việc này, trước tiên bạn phải xác định một truy vấn thích hợp và chuyển truy vấn đó tới phương thức truy vấn của kết nối . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói . Giao tiếp với cơ sở dữ liệu diễn ra không đồng bộ và cũng sử dụng lời hứa. Ngoài ra, gói object. Communication with the database takes place asynchronously and also uses promises. Alternatively, the mysql2 cũng cung cấp giao diện dựa trên lệnh gọi lại, nhưng giao diện này kém thuận tiện hơn nhiều khi sử dụng. Mã nguồn dưới đây cho thấy cách bạn có thể đọc dữ liệu từ một bảng.

 

--name mysql9

-v db-data:/etc/mysql/conf.d0

-v db-data:/etc/mysql/conf.d1

-e MYSQL_ROOT_PASSWORD=topSecret7

-v db-data:/etc/mysql/conf.d3

-v db-data:/etc/mysql/conf.d4

-v db-data:/etc/mysql/conf.d5

-v db-data:/etc/mysql/conf.d6

-v db-data:/etc/mysql/conf.d0

-v db-data:/etc/mysql/conf.d8

-v db-data:/etc/mysql/conf.d0

-e MYSQL_ROOT_HOST=% -p 3306:33065

-e MYSQL_ROOT_HOST=% -p 3306:33066

-e MYSQL_ROOT_HOST=% -p 3306:33067

-e MYSQL_ROOT_HOST=% -p 3306:33068

-e MYSQL_ROOT_HOST=% -p 3306:33069

-e MYSQL_ROOT_PASSWORD=topSecret1

-e MYSQL_ROOT_PASSWORD=topSecret2

-e MYSQL_ROOT_PASSWORD=topSecret3

 

Phương thức truy vấn của đối tượng kết nối trả về một . Phần tử đầu tiên của mảng này chứa dữ liệu được truy vấn từ cơ sở dữ liệu mà bạn có thể trích xuất và trả về bằng cách sử dụng câu lệnh hủy. Sau khi bạn đánh dấu hàm getAll là hàm async , bạn có thể làm việc . Nếu thành công, đối tượng lời hứa được trả về chứa dữ liệu từ cơ sở dữ liệu; . await keyword, and the function will automatically return a promise object. If successful, the returned promise object contains the data from the database; if there’s an error, the corresponding error is returned from the database.

 

Vì chữ ký của phương thức getAll không thay đổi do kết nối cơ sở dữ liệu nên bạn không cần điều chỉnh gì cả .

 

Hiện tại, mã nguồn của ứng dụng của bạn chỉ giả định trường hợp thành công, đủ cho mục đích của chúng tôi, cụ thể là kết nối cơ sở dữ liệu. Tuy nhiên, đối với một ứng dụng hiệu quả, bạn cũng cần quan tâm đến việc xử lý lỗi và gửi ít nhất một thông báo lỗi chung để thông báo cho người dùng của mình mà không tiết lộ quá nhiều chi tiết nội bộ về ứng dụng của bạn cho kẻ tấn công tiềm năng

 

Trình điều khiển MySQL cho Node. js hỗ trợ nhiều tính năng khác, chẳng hạn như thoát, được mô tả chi tiết hơn trong các phần sau

 

Tạo bản ghi dữ liệu mới

Sau khi triển khai quyền truy cập đọc vào cơ sở dữ liệu, bước tiếp theo xử lý quyền truy cập ghi. Về cơ bản, quy trình thao tác ở đây cũng tương tự vì bạn cũng sử dụng phương thức truy vấn của đối tượng kết nối để gửi INSERT . Một tính năng đặc biệt ở đây là bạn không trực tiếp soạn các giá trị do người dùng nhập vào một truy vấn thông qua nối chuỗi, mà sử dụng trình giữ chỗ và để trình điều khiển cơ sở dữ liệu thực hiện thoát. Điều này làm giảm nguy cơ bị SQL injection. query. A special feature here is that you don’t directly compose the values entered by the users into a query via string concatenation, but rather use placeholders and let the database driver do the escaping. This reduces the risk of an SQL injection.

 

Như trường hợp của quá trình đọc, bạn cũng sử dụng phim/mô hình. js file làm điểm bắt đầu khi tạo bản ghi mới. Dưới đây hiển thị mã nguồn tùy chỉnh của tệp.

 

--name mysql9

-v db-data:/etc/mysql/conf.d0

-d5

-v db-data:/etc/mysql/conf.d0

-v db-data:/etc/mysql/conf.d8

-v db-data:/etc/mysql/conf.d0

-d9

-v db-data:/etc/mysql/conf.d0

mysql:latest1

mysql:latest2

mysql:latest3

mysql:latest4

mysql:latest5

-e MYSQL_ROOT_PASSWORD=topSecret1

-e MYSQL_ROOT_PASSWORD=topSecret2

mysql:latest8

mysql:latest9

CREATE DATABASE `movie-db`;0

CREATE DATABASE `movie-db`;1

mysql:latest5

 

Vị trí trung tâm của tệp mô hình chịu trách nhiệm lưu dữ liệu là chức năng save . Dựa trên sự hiện diện của thuộc tính id của bản ghi dữ liệu đã truyền, hàm sẽ quyết định xem nó sẽ tạo bản ghi mới hay cập nhật bản ghi hiện có sau đó. Trong trường hợp tạo mới hiện tại, hàm save sau đó gọi hàm insert function with the data record to be created.

 

Bạn có thể triển khai chức năng insert dưới dạng async . Trong bước đầu tiên, bạn phải chuẩn bị câu lệnh mysql2 driver comfortably. In the first step, you must prepare the INSERT bằng cách viết hoàn chỉnh truy vấn và cung cấp dấu chấm hỏi cho các giá trị được chèn. Sau đó, trình điều khiển sẽ thay thế các dấu chấm hỏi này bằng các giá trị khi chúng được gọi và đảm nhiệm việc thoát các giá trị một cách chính xác. Phương thức truy vấn của đối tượng kết nối chấp nhận câu lệnh SQL dưới dạng chuỗi . Giá trị trả về là một đối tượng lời hứa với một mảng có phần tử đầu tiên chứa một bộ siêu dữ liệu về yêu cầu. Tại đây, bạn sẽ tìm thấy thuộc tính insertId chứa ID của bản ghi dữ liệu mới được tạo. Bạn phải sử dụng ID này cùng với thông tin từ đối tượng được truyền ban đầu để tạo một đối tượng mới với toán tử trải rộng và trả lại đối tượng gọi.

 

Bạn không cần điều chỉnh bộ điều khiển và saveAction của nó vì giao diện của mô hình không thay đổi.

 

Cập nhật bản ghi dữ liệu

Để cập nhật các bản ghi dữ liệu trong ứng dụng của bạn, trước tiên bạn phải kết nối phương thức mô hình để đọc các bản ghi dữ liệu riêng lẻ với cơ sở dữ liệu để điền dữ liệu hiện có vào biểu mẫu. Trong quá trình triển khai, bạn nên kết hợp cấu trúc của yêu cầu đọc từ trước với thoát để chèn ID được truyền vào yêu cầu một cách an toàn. Mã bên dưới hiển thị các điều chỉnh cần thiết cho phim/mô hình. js tệp.

 

--name mysql9

-v db-data:/etc/mysql/conf.d0

-v db-data:/etc/mysql/conf.d1

-e MYSQL_ROOT_PASSWORD=topSecret7

-v db-data:/etc/mysql/conf.d3

-v db-data:/etc/mysql/conf.d4

CREATE DATABASE `movie-db`;9

-v db-data:/etc/mysql/conf.d6

-v db-data:/etc/mysql/conf.d0

-v db-data:/etc/mysql/conf.d8

-v db-data:/etc/mysql/conf.d0

-d9

-v db-data:/etc/mysql/conf.d0

USE `movie-db`;6

USE `movie-db`;7

USE `movie-db`;8

USE `movie-db`;9

CREATE TABLE `Movies` (0

CREATE TABLE `Movies` (1

mysql:latest5

-e MYSQL_ROOT_PASSWORD=topSecret2

CREATE TABLE `Movies` (4

 

Một lần nữa, không cần điều chỉnh thêm đối với bộ điều khiển hoặc chế độ xem, vì vậy trong bước cuối cùng, bạn có thể chuyển sự chú ý của mình sang triển khai chức năng cập nhật dữ liệu trong cơ sở dữ liệu. Với mục đích này, bạn phải sử dụng yêu cầu cập nhật cơ sở dữ liệu

 

Các điều chỉnh cho bản cập nhật được giới hạn ở những thay đổi được hiển thị bên dưới vì bộ điều khiển chuyển các yêu cầu trực tiếp đến mô hình cho cả bản cập nhật và cài đặt mới

 

--name mysql9

-v db-data:/etc/mysql/conf.d0

-d5

-v db-data:/etc/mysql/conf.d0

-v db-data:/etc/mysql/conf.d8

-v db-data:/etc/mysql/conf.d0

-d9

-v db-data:/etc/mysql/conf.d0

USE `movie-db`;6

USE `movie-db`;7

--name mysql05

--name mysql06

--name mysql07

--name mysql08

mysql:latest5

-v db-data:/etc/mysql/conf.d0

--name mysql11

-e MYSQL_ROOT_PASSWORD=topSecret2

--name mysql13

--name mysql14

--name mysql15

--name mysql16

--name mysql17

CREATE DATABASE `movie-db`;1

-e MYSQL_ROOT_HOST=% -p 3306:33069

 

Xóa bản ghi dữ liệu

Thao tác cuối cùng mà bạn sẽ tìm hiểu ở đây liên quan đến MySQL là xóa các bản ghi dữ liệu khỏi cơ sở dữ liệu. Xóa bản ghi dữ liệu không thể dễ dàng hoàn tác. Nếu bạn làm việc với tính toàn vẹn tham chiếu thông qua khóa ngoại, việc xóa một bản ghi có thể dẫn đến việc xóa một loạt các bản ghi dữ liệu khác dựa trên bản ghi đó. Do đó, bạn phải luôn thận trọng với các thao tác như vậy và nếu nghi ngờ, hãy nhắc người dùng xác nhận qua hộp thoại. Dưới đây cho biết cách bạn có thể xóa bản ghi dữ liệu khỏi cơ sở dữ liệu của mình

 

--name mysql9

-v db-data:/etc/mysql/conf.d0

-d5

-v db-data:/etc/mysql/conf.d0

-v db-data:/etc/mysql/conf.d8

-v db-data:/etc/mysql/conf.d0

-d9

-v db-data:/etc/mysql/conf.d0

USE `movie-db`;6

-v db-data:/etc/mysql/conf.d0

--name mysql30

-v db-data:/etc/mysql/conf.d0

--name mysql11

USE `movie-db`;7

--name mysql34

--name mysql35

--name mysql36

--name mysql37

mysql:latest5

-v db-data:/etc/mysql/conf.d0

CREATE TABLE `Movies` (4

 

Về cấu trúc, hàm remove tương tự như hàm get function except that you use a DELETE statement instead of a SELECT statement. With these customizations, you can now manage the data records in your application. You can create new records, view existing ones, and modify them. You can delete data records from the database that are no longer needed.

 

Một giải pháp thay thế cho việc xóa cuối cùng các bản ghi dữ liệu là đánh dấu các bản ghi. Trong cơ sở dữ liệu, điều này được thể hiện bằng một trường bổ sung trong bảng. Trường này chứa giá trị 0 đối với bản ghi dữ liệu đang hoạt động và giá trị 1 . Hạn chế của biến thể này là bạn phải tự mình chăm sóc tính toàn vẹn tham chiếu của cơ sở dữ liệu của mình; .

 

Thực tế là bạn cần cài đặt trình điều khiển cho mỗi lần truy cập cơ sở dữ liệu tương ứng cho phép bạn kết nối các cơ sở dữ liệu khác nhau. Ngoài MySQL, còn có rất nhiều cơ sở dữ liệu quan hệ khác. Ví dụ, một giải pháp thay thế nhẹ là SQLite

Làm cách nào để lấy dữ liệu từ cơ sở dữ liệu MySQL trong JavaScript?

Để chọn dữ liệu từ một bảng trong MySQL, hãy sử dụng câu lệnh "SELECT". .
Chọn tất cả các bản ghi từ bảng "khách hàng" và hiển thị đối tượng kết quả. .
Chọn tên và địa chỉ từ bảng "khách hàng" và hiển thị đối tượng trả về. .
Chọn tất cả các bản ghi từ bảng "khách hàng" và hiển thị đối tượng trường

Tôi có thể truy cập cơ sở dữ liệu bằng JavaScript không?

JavaScript không thể truy cập trực tiếp cơ sở dữ liệu . Bạn sẽ cần có một số thành phần phía máy chủ nhận yêu cầu (có thể qua HTTP), phân tích cú pháp và trả về dữ liệu được yêu cầu. Sau đó, JavaScript có thể truy cập thành phần đó để lấy dữ liệu (hm. có mùi như AJAX).