PENDAHULUAN: Mengikuti nodeJs sebelumnya, dunia! Kami juga dapat melihat fitur kuat lainnya. Dengan popularitas komunitas NodeJS saat ini dan dukungan dari sejumlah besar insinyur, sejumlah besar modul telah diperkenalkan secara bertahap.
Konten: Berikut ini menunjukkan interaksi antara NodeJs dan MySQL.
Saat ini, Anda perlu menambahkan modul MySQL ke nodeJs. Pada saat ini, NPM (Node Package Manager) yang disebutkan dalam bab sebelumnya telah diaktifkan.
Instal Modul MySQL ke NodeJs:
Salinan kode adalah sebagai berikut:
$ npm instal mysql
JS Script mysqltest.js
Salinan kode adalah sebagai berikut:
// mysqltest.js
// Muat modul mysql
var client = membutuhkan ('mysql'). klien,
klien = klien baru (),
// Nama basis data yang akan dibuat
Test_database = 'nodejs_mysql_test',
// Nama tabel yang akan dibuat
Test_table = 'test';
//nama belakang
client.user = 'root';
//kata sandi
client.password = 'root';
// Buat koneksi
client.connect ();
client.query ('Buat database'+test_database, function (err) {
if (err && err.number! = client.error_db_create_exists) {
Lempar err;
}
});
// Jika tidak ada panggilan balik yang disediakan, kesalahan apa pun akan dipancarkan sebagai `'error'
// acara oleh klien
client.query ('gunakan'+test_database);
client.query (
'Buat tabel'+test_table+
'(id int (11) auto_increment,'+
'Judul Varchar (255),'+
'Teks teks,'+
'Dibuat Datetime,'+
'Kunci utama (id))'
);
client.query (
'Sisipkan ke'+test_table+''+
'Set Title =?, Text =?, Dibuat =?',
['super keren', 'ini adalah teks yang bagus', '2010-08-16 10:00:23']
);
var query = client.query (
'Sisipkan ke'+test_table+''+
'Set Title =?, Text =?, Dibuat =?',
['Entri lain', 'karena 2 entri membuat tes yang lebih baik', '2010-08-16 12:42:15']
);
client.query (
'Pilih * dari'+test_table,
fungsi selectcb (err, hasil, bidang) {
if (err) {
Lempar err;
}
console.log (hasil);
console.log (bidang);
client.end ();
}
);
Menjalankan skrip
Salinan kode adalah sebagai berikut:
node mysqltest.js
Efeknya adalah sebagai berikut:
// mysql-demo.js
const mysql = membutuhkan ('mysql2/janji'); // Gunakan mysql2 yang mendukung janji
membutuhkan ('dotenv'). config (); // Manajemen Variabel Lingkungan
// Gunakan kumpulan koneksi untuk meningkatkan kinerja
const pool = mysql.createPool ({
Host: Process.env.db_host || 'localhost',
Pengguna: process.env.db_user || 'akar',
Kata sandi: Process.env.db_password || 'akar',
Database: Process.env.db_name || 'nodejs_mysql_test',
WaitForConnections: Benar,
ConnectionLimit: 10,
Queuelimit: 0
});
// Definisi Struktur Tabel (Manajemen DDL)
const table_schema = `
Buat tabel jika tidak ada posting (
ID int Key primer auto_increment,
judul varchar (255) bukan nol,
teks konten,
create_at datetime default current_timestamp,
update_at datetime pada pembaruan current_timestamp
) Engine = Charset default InnoDB = UTF8MB4 COLATE = UTF8MB4_UNICODE_CI;
`;
// enkapsulasi logika bisnis
kelas postdao {
konstruktor (pool) {
this.pool = pool;
}
async initialize () {
menunggu this.pool.execute (Table_schema);
console.log ('Tabel diverifikasi/dibuat');
}
async createPost (post) {
const [hasil] = menunggu this.pool.execute (
`Masukkan ke dalam posting (judul, konten)
Nilai (?,?) `,
[Post.Title, Post.Content]
);
return {... post, id: result.insertid};
}
async getPosts (page = 1, pageSize = 10) {
const offset = (halaman - 1) * halaman;
const [baris] = menunggu this.pool.execute (
`Pilih * dari posting
Pesanan oleh create_at desc
MEMBATASI ? Offset? `,
[Halaman, Offset]
);
Baris mengembalikan;
}
async transactionDemo () {
const conn = menunggu this.pool.getConnection ();
mencoba {
menunggu conn.begintransaction ();
// Operasi Transaksi 1
menunggu Conn.Execute (
`Masukkan ke dalam posting (judul, konten)
Nilai (?,?) `,
['Transaksi 1', 'Demo Operasi Atom']
);
// Operasi Transaksi 2
const [hasil] = menunggu conn.execute (
`Perbarui Posting Set Konten =?
Dimana judul =? `,
['Konten yang diperbarui', 'Transaksi 1']
);
tunggu conn.commit ();
hasil pengembalian;
} catch (err) {
menunggu conn.rollback ();
Lempar err;
} Akhirnya {
conn.release ();
}
}
}
// contoh eksekusi
(async () => {
mencoba {
const dao = postdao baru (pool);
menunggu dao.initialize ();
// Buat artikel baru
const newPost = menunggu dao.createPost ({
Judul: 'Modern Node.js MySQL Guide',
Konten: 'Praktik Terbaik untuk Operasi Basis Data'
});
console.log ('Posting yang dibuat:', newPost);
// kueri pagination
Posting const = menunggu dao.getPosts ();
Console.log ('Hasil Halaman Pertama:', Posting);
// demo transaksi
const txResult = menunggu dao.transactionDemo ();
console.log ('Transaksi selesai:', txResult);
// kueri akhir
const finalPosts = menunggu dao.getPosts ();
console.log ('Posting akhir:', finalPosts);
} catch (err) {
console.error ('kesalahan aplikasi:', err);
} Akhirnya {
menunggu biliar.end ();
}
}) ();