Dapatkah javascript berkomunikasi dengan mysql?

MySQL adalah salah satu database yang paling banyak digunakan di web. Anda dapat mengakses database ini dengan hampir semua bahasa pemrograman utama. Koneksi Node. js ke MySQL dapat direalisasikan melalui driver database khusus

 

MySQL telah membuktikan dirinya sebagai database selama bertahun-tahun, bahkan dalam aplikasi yang sangat besar. Sistem ini tidak hanya memiliki komponen server yang sederhana, tetapi juga memungkinkan Anda untuk menjalankan database di banyak server dalam struktur gabungan primer-sekunder. Manfaatnya adalah Anda dapat mendistribusikan permintaan ke beberapa sistem dan dengan demikian memastikan ketahanan

 

Selain itu, untuk volume data yang sangat besar, database dapat dipartisi dan didistribusikan ke beberapa sistem, yang menawarkan peluang lebih lanjut dalam hal peningkatan kinerja. MySQL memiliki banyak fitur berguna lainnya, termasuk pemicu (fungsi yang dijalankan saat operasi tertentu dilakukan), dan transaksi. transaksi merupakan sekelompok operasi yang hanya dapat dilakukan seluruhnya atau tidak sama sekali.

 

Keuntungan lain dari MySQL adalah database ini tersedia di sejumlah besar sistem operasi yang berbeda, seperti Linux, Windows, dan macOS. Ketersediaan dan penggunaan yang meluas telah menghasilkan komunitas yang sangat aktif yang dapat Anda hubungi jika Anda memiliki pertanyaan atau masalah. Ada juga fork MySQL, seperti MariaDB, yang menawarkan fungsionalitas serupa

 

Salah satu kelemahan MySQL adalah tidak dapat mengimbangi database SQL besar seperti Oracle atau DB2 dalam hal rangkaian fiturnya. Namun, pengembangan database yang maju semakin mengkompensasi kerugian ini

 

Secara umum, ada dua pendekatan berbeda untuk menghubungkan ke database MySQL. Untuk satu hal, ada driver yang secara langsung mengimplementasikan protokol MySQL dan seluruhnya ditulis dalam JavaScript. Tidak diperlukan perangkat lunak lain untuk driver ini, dan dapat digunakan langsung untuk bekerja dengan database

 

Varian lain dari driver MySQL didasarkan pada pustaka klien MySQL. Ini memiliki keuntungan karena sedikit lebih berkinerja daripada driver yang diimplementasikan sepenuhnya dalam JavaScript. Namun, mereka memiliki kelemahan bahwa pustaka klien MySQL harus diinstal pada sistem yang menjalankan Node. aplikasi js

 

MySQL dalam Wadah

Anda tidak perlu menginstal MySQL pada sistem pengembangan Anda. Khusus untuk bereksperimen, menjalankan database dalam wadah adalah alternatif yang layak. Tetapi wadah juga menjadi semakin populer untuk operasi pengembangan sehari-hari, karena pendekatan ini memungkinkan konfigurasi untuk dibagikan antara sistem pengembang dan konfigurasi wadah untuk dibuat versi bersama dengan kode sumber aplikasi lainnya. Anda dapat meluncurkan wadah MySQL menggunakan perintah yang ditunjukkan di bawah ini

 

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_

 

Perintah docker run membuat container baru dari image bernama mysql. terbaru. Gambar mysql secara resmi disediakan oleh MySQL di Docker Hub (https. //pusat. buruh pelabuhan. com/), yang diunduh dengan perintah dalam versi yang ditentukan—di sini . terbaru—yaitu, versi terbaru. Opsi --name memberikan nama ke penampung agar lebih mudah dikelola dan tidak perlu dialamatkan oleh ID-nya. Anda dapat menggunakan opsi -v untuk menentukan bahwa direktori lokal dipasang sebagai volume di wadah, sehingga file database berada di host . Opsi -e berikutnya menyetel variabel lingkungan untuk penampung, yang digunakan MySQL dalam kasus ini untuk menyetel root < . Terakhir, Anda menggunakan password and allow the root user to log on from outside the container. Finally, you use -d untuk menentukan bahwa penampung harus berjalan di latar belakang. Saat Anda menjalankan perintah, Anda akan mendapatkan string karakter yang tampak samar sebagai hasilnya. Ini adalah ID penampung, yang juga dapat Anda gunakan untuk mengelola penampung selain namanya. Setelah Anda meluncurkan wadah, Anda dapat menggunakan MySQL di sistem Anda.

 

Tabel di bawah ini berisi ikhtisar perintah paling penting untuk baris perintah Docker. Daftar lengkap semua perintah, termasuk deskripsi dan semua opsi yang tersedia, dapat ditemukan di dokumentasi resmi di https. //dokumen. buruh pelabuhan. com/engine/reference/commandline/cli/.

 

Dapatkah javascript berkomunikasi dengan mysql?

 

Instalasi

Driver MySQL untuk tersedia sebagai modul npm dan dapat diinstal dari baris perintah menggunakan npm install mysql2 command. The driver implements the MySQL protocol entirely in , sehingga Anda tidak perlu menginstal pustaka eksternal lainnya atau melakukan langkah kompilasi apa pun selama proses instalasi.

 

Setelah instalasi selesai dan Anda memiliki database MySQL yang tersedia, Anda dapat mengakses database MySQL dari aplikasi Anda

 

Struktur Basis Data

Untuk mereproduksi contoh-contoh di bab ini, Anda memerlukan instance berjalan dari database MySQL dengan struktur data untuk dikerjakan. Daftar di bawah berisi perintah SQL yang diperlukan untuk membuat database dengan dua tabel, Movies and Ratings, 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 secara lokal di konsol sistem Anda, atau, jika Anda menjalankan database dalam < . Kemudian Anda dapat menjalankan pernyataan yang ditunjukkan di bawah ini. 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`;

USE `movie-db`;_

CREATE TABLE `Movies` (_

--name mysql_0

--name mysql_1

--name mysql_2

--name mysql_3

--name mysql_4

--name mysql_5

--name mysql_6

--name mysql_7

--name mysql_8

 

Membangun Koneksi

Dalam aplikasi apa pun yang menggunakan basis data, sebelum menggunakan basis data ini, koneksi harus dibuat terlebih dahulu melalui mana perintah dikirim ke sistem basis data dan informasi dari basis data dapat mengalir kembali ke aplikasi. Aplikasi ini didasarkan pada kode sumber dari buku Node. js. Panduan Komprehensif , dan menggunakan mesin template Pug. Koneksi basis data dibuat di movie/model. js berkas. Di bawah ini menunjukkan bagaimana Anda dapat melakukan ini dalam kode sumber.

 

--name mysql_9

-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.d_3

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

-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.d_8

-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=topSecret_3

 

Setelah menyertakan antarmuka janji dari modul mysql2 , Anda dapat menggunakan 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 , ia mengembalikan objek janji yang dapat Anda tunggu untuk diselesaikan menggunakan menunggu keyword. You can also terminate an open connection by calling the end . Metode connect juga mengembalikan objek janji. Anda dapat menggunakan metode catch dari objek ini untuk mengimplementasikan penanganan kesalahan yang terkait dengan pembentukan koneksi. Sebagai alternatif, Anda dapat menggunakan kata kunci menunggu dan melakukan penanganan kesalahan dengan try-catch.

 

Koneksi juga dapat dibuat secara implisit dengan memanggil metode kueri pada objek koneksi.

 

Membaca Catatan Data

Karena Anda telah membuat beberapa record data saat menginisialisasi database, Anda sudah dapat membacanya. Untuk melakukannya, pertama-tama Anda harus menentukan kueri yang sesuai dan meneruskannya ke metode kueri dari koneksi object. Communication with the database takes place asynchronously and also uses promises. Alternatively, the mysql2 juga menyediakan antarmuka berbasis callback, tetapi ini kurang nyaman untuk digunakan. Kode sumber di bawah ini menunjukkan bagaimana Anda dapat membaca data dari tabel.

 

--name mysql_9

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

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

-e MYSQL_ROOT_PASSWORD=topSecret_7

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

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

-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.d_8

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

-e MYSQL_ROOT_HOST=% -p 3306:3306_5

-e MYSQL_ROOT_HOST=% -p 3306:3306_6

-e MYSQL_ROOT_HOST=% -p 3306:3306_7

-e MYSQL_ROOT_HOST=% -p 3306:3306_8

-e MYSQL_ROOT_HOST=% -p 3306:3306_9

-e MYSQL_ROOT_PASSWORD=topSecret1

-e MYSQL_ROOT_PASSWORD=topSecret2

-e MYSQL_ROOT_PASSWORD=topSecret_3

 

Metode kueri dari koneksi mengembalikan . Elemen pertama dari array ini berisi data yang dikueri dari database, yang dapat Anda ekstrak dan kembalikan menggunakan pernyataan destrukturisasi. Setelah Anda menandai fungsi getAll sebagai fungsi async , Anda dapat bekerja . Jika berhasil, objek janji yang dikembalikan berisi data dari database; . 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.

 

Karena tanda tangan dari metode getAll tidak berubah karena koneksi database, Anda tidak perlu menyesuaikan apa pun .

 

Saat ini, kode sumber aplikasi Anda hanya mengasumsikan kasus sukses, yang cukup untuk tujuan kita, yaitu menghubungkan database. Namun, untuk aplikasi yang produktif, Anda juga perlu menangani penanganan kesalahan dan mengirim setidaknya pesan kesalahan umum untuk memberi tahu pengguna Anda tanpa mengungkapkan terlalu banyak detail internal tentang aplikasi Anda kepada calon penyerang.

 

Driver MySQL untuk Node. js mendukung banyak fitur lain, seperti pelolosan, yang dijelaskan lebih detail di bagian berikut

 

Membuat Catatan Data Baru

Setelah mengimplementasikan akses baca ke database, langkah selanjutnya berkaitan dengan akses tulis. Pada dasarnya, proses operasi di sini serupa karena Anda juga menggunakan metode query dari objek koneksi untuk mengirim INSERT . Fitur khusus di sini adalah Anda tidak secara langsung menyusun nilai yang dimasukkan oleh pengguna ke dalam kueri melalui penggabungan string, melainkan menggunakan placeholder dan membiarkan driver database melakukan pelolosan. Ini mengurangi risiko injeksi SQL. 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.

 

Sama halnya dengan proses membaca, Anda juga menggunakan movie/model. js sebagai titik awal saat membuat record baru. Di bawah ini menunjukkan kode sumber file yang disesuaikan.

 

--name mysql_9

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

-d5

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

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

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

-d_9

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

mysql:latest_1

mysql:latest_2

mysql:latest_3

mysql:latest_4

mysql:latest_5

-e MYSQL_ROOT_PASSWORD=topSecret1

-e MYSQL_ROOT_PASSWORD=topSecret2

mysql:latest_8

mysql:latest_9

CREATE DATABASE `movie-db`;0

CREATE DATABASE `movie-db`;1

mysql:latest_5

 

Tempat utama file model yang menangani penyimpanan data adalah fungsi save . Berdasarkan keberadaan properti id dari rekaman data yang diteruskan, fungsi memutuskan apakah akan membuat rekaman baru atau memperbarui rekaman yang sudah ada nanti. Dalam kasus kreasi baru saat ini, fungsi save lalu memanggil insert function with the data record to be created.

 

Anda dapat mengimplementasikan fungsi sisipkan sebagai async . Pada langkah pertama, Anda harus menyiapkan pernyataan mysql2 driver comfortably. In the first step, you must prepare the INSERT dengan menuliskan query secara lengkap dan memberikan tanda tanya untuk nilai yang akan disisipkan. Pengemudi kemudian mengganti tanda tanya ini dengan nilai ketika mereka dipanggil dan menangani pelepasan nilai dengan benar. Metode kueri dari objek koneksi menerima pernyataan SQL sebagai string . Nilai yang dikembalikan adalah objek janji dengan larik yang elemen pertamanya berisi kumpulan metadata tentang permintaan. Di sini Anda akan menemukan, antara lain, properti insertId , yang berisi ID rekaman data yang baru dibuat. Anda harus menggunakan ID ini bersama dengan informasi dari objek yang awalnya diteruskan untuk membuat objek baru dengan operator spread dan mengembalikannya ke instance pemanggil.

 

Anda tidak perlu menyesuaikan pengontrol dan saveAction karena antarmuka model tidak berubah.

 

Memperbarui Catatan Data

Untuk memperbarui catatan data dalam aplikasi Anda, Anda harus terlebih dahulu menghubungkan metode model untuk membaca catatan data individual ke database untuk mengisi formulir dengan data yang ada. Dalam penerapannya, Anda harus menggabungkan struktur permintaan membaca dari sebelumnya dengan melarikan diri untuk memasukkan ID yang diteruskan dengan aman ke dalam permintaan. Kode di bawah menunjukkan penyesuaian yang diperlukan untuk movie/model. js berkas.

 

--name mysql_9

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

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

-e MYSQL_ROOT_PASSWORD=topSecret_7

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

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

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.d_8

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

-d_9

-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:latest_5

-e MYSQL_ROOT_PASSWORD=topSecret2

CREATE TABLE `Movies` (_4

 

Sekali lagi, tidak diperlukan penyesuaian lebih lanjut pada pengontrol atau tampilan, jadi pada langkah terakhir, Anda dapat mengalihkan perhatian Anda untuk mengimplementasikan fungsionalitas untuk memperbarui data dalam database. Untuk tujuan ini, Anda harus menggunakan permintaan pembaruan ke database

 

Penyesuaian untuk pembaruan terbatas pada perubahan yang ditampilkan di bawah ini karena pengontrol meneruskan permintaan langsung ke model untuk pembaruan dan instalasi baru

 

--name mysql_9

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

-d5

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

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

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

-d_9

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

USE `movie-db`;_6

USE `movie-db`;_7

--name mysql_05

--name mysql_06

--name mysql_07

--name mysql_08

mysql:latest_5

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

--name mysql_11

-e MYSQL_ROOT_PASSWORD=topSecret2

--name mysql_13

--name mysql_14

--name mysql_15

--name mysql_16

--name mysql_17

CREATE DATABASE `movie-db`;1

-e MYSQL_ROOT_HOST=% -p 3306:3306_9

 

Menghapus Rekaman Data

Operasi terakhir yang akan Anda pelajari di sini sehubungan dengan MySQL adalah menghapus record data dari database. Menghapus rekaman data tidak dapat dibatalkan dengan mudah. Jika Anda bekerja dengan integritas referensial melalui kunci asing, menghapus satu rekaman dapat mengakibatkan kaskade penghapusan rekaman data lain yang didasarkan pada rekaman tersebut. Oleh karena itu, Anda harus selalu berhati-hati dengan pengoperasian tersebut dan, jika ragu, meminta konfirmasi dari pengguna melalui dialog. Di bawah ini menunjukkan bagaimana Anda dapat menghapus catatan data dari database Anda

 

--name mysql_9

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

-d5

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

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

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

-d_9

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

USE `movie-db`;_6

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

--name mysql_30

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

--name mysql_11

USE `movie-db`;_7

--name mysql_34

--name mysql_35

--name mysql_36

--name mysql_37

mysql:latest_5

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

CREATE TABLE `Movies` (_4

 

Terkait dengan strukturnya, fungsi hapus mirip dengan dapatkan 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.

 

Alternatif untuk penghapusan akhir catatan data adalah penandaan catatan. Dalam database, ini diwakili oleh bidang tambahan di dalam tabel. Bidang ini berisi nilai 0 untuk catatan data aktif dan nilai 1 . Kelemahan dari varian ini adalah Anda harus mengurus sendiri integritas referensial database Anda; .

 

Fakta bahwa Anda perlu menginstal driver untuk setiap akses database memungkinkan Anda untuk menghubungkan database yang berbeda. Selain MySQL, ada banyak database relasional lainnya. Alternatif yang ringan, misalnya, adalah SQLite

Bisakah JavaScript digunakan untuk berinteraksi dengan database?

Tidak disarankan menggunakan klien JavaScript untuk mengakses database karena beberapa alasan. Misalnya, ini bukan praktik yang baik, ada beberapa masalah keamanan dan menawarkan masalah kerentanan. Node.

Bisakah Anda meminta SQL dengan JavaScript?

SQL. js adalah pustaka JavaScript yang memungkinkan Anda membuat dan mengkueri database relasional sepenuhnya di browser . Ini menggunakan file database virtual yang disimpan di memori browser, sehingga tidak mempertahankan perubahan yang dibuat pada database.

Bagaimana cara mendapatkan data dari database MySQL di JavaScript?

Untuk memilih data dari tabel di MySQL, gunakan pernyataan "SELECT". .
Pilih semua rekaman dari tabel "pelanggan", dan tampilkan objek hasil. .
Pilih nama dan alamat dari tabel "pelanggan", dan tampilkan objek pengembalian. .
Pilih semua rekaman dari tabel "pelanggan", dan tampilkan objek bidang

Bagaimana cara menulis kueri MySQL dalam JavaScript?

js. const mysql = require('mysql'); // Pertama, Anda perlu membuat koneksi ke database // Pastikan untuk mengganti 'user' dan . createConnection({host. 'localhost', pengguna. 'pengguna', sandi. 'sandi', }); . terhubung((err) => { jika(err){ konsol.