Bagaimana cara membuat skema node js di mysql?

Banyak Node. Proyek js menggunakan database NoSQL untuk memenuhi komponen lapisan persistensi. Pengembang database NoSQL tidak perlu terlalu khawatir tentang perubahan model data yang memengaruhi aplikasi selama logika mendukung definisi data baru

Masalah

Namun, banyak proyek masih lebih cocok menggunakan database relasional seperti MySQL atau Postgres. Tidak seperti mitra NoSQL, perubahan skema basis data relasional perlu dikelola di server basis data, yang terpisah dari kode. Ini sering menyebabkan masalah berikut

  • Status skema basis data menjadi tidak konsisten antara pengembang dan sistem
  • Membuat perubahan memerlukan pekerjaan manusia secara manual dan potensi waktu henti pada aplikasi langsung
  • Mempertahankan proyek dalam tim menjadi sulit karena skema tidak dapat dengan mudah dibagikan

Solusinya

Migrasi basis data adalah proses mengubah data antara berbagai keadaan tanpa interaksi manusia. Proses ini akan memungkinkan kami melacak perubahan di antara pembaruan skema

Kami akan menggunakan kerangka kerja sumber terbuka yang disebut node-db-migrate. Apakah Anda sedang membangun aplikasi konsol sederhana atau API kompleks, kerangka kerja dapat digunakan untuk mengelola perubahan skema database. Artikel ini akan menggunakan aplikasi LoopBack 4 sederhana untuk menampilkan kerangka kerja

Mulailah dengan LoopBack 4 dengan membaca artikel ini

Mulai

Artikel ini menganggap Anda telah membuat aplikasi LoopBack 4, atau sudah bekerja di dalam Node.js yang sudah ada. proyek js

Instalasi

Kerangka kerja migrasi node-db mencakup alat CLI yang rapi yang dapat kita gunakan untuk mengelola skrip migrasi database kita. Kami dapat menginstalnya secara global di mesin kami menggunakan perintah berikut

npm install -g db-migrate

Pastikan Anda berada di direktori kerja Node. aplikasi js

Kami akan mengelola skema database MySQL. node-db-migrate memiliki berbagai paket yang menangani koneksi ke berbagai mesin basis data, seperti MySQL. Untuk mengelola database MySQL menggunakan node-db-migrate, kita perlu menginstal paket berikut di proyek kita

npm install --save db-migrate-mysql
_

Ini akan menginstal node_module db-migrate-mysql dan melacak versi dependensi dalam paket. file json

Konfigurasi

Kita perlu memberi tahu kerangka kerja node-db-migrasi cara terhubung ke database kita. Saya telah menginstal server MySQL lokal dan membuat skema yang disebut "payment_api"

Membuat skema baru menggunakan MySQL Workbench di Mac menggunakan UTF8 Collation

Skema. Definisi yang menjelaskan seluruh kumpulan objek dalam database. Kami menyebutnya sebagai database pada server MySQL
Pemeriksaan. Collation adalah seperangkat aturan untuk membandingkan karakter dalam kumpulan karakter. Kami menggunakan susunan default utf8 untuk mendukung berbagai rangkaian karakter dalam aplikasi kami

Sekarang kami memiliki skema database di server MySQL lokal kami, kami dapat memberi tahu node-db-migrate cara menyambungkannya. Secara default, node-db-migrate akan mencari file bernama database. json di direktori root proyek

Basis data baru. json di direktori proyek root
{
"dev": {
"driver": "mysql",
"host": "localhost",
"port": "3306",
"user": "root",
"password": "root",
"database": "payment_api"
}
}

Data. file json berisi satu objek JSON dengan satu properti yang disebut "dev". Menurut dokumentasi migrasi node-db, kerangka kerja akan menggunakan objek bernama "dev" atau "pengembangan" secara default. Ini dapat ditimpa atau diteruskan saat menjalankan migrasi Anda. Ini juga membantu saat mengonfigurasi migrasi kami untuk berbagai instans database dengan konfigurasi berbeda, yang akan dilihat di artikel mendatang

Properti konfigurasi cukup jelas. Satu-satunya yang perlu disebutkan adalah properti "pengemudi". Kami menggunakan "mysql" sebagai nilai properti, yang akan menunjukkan ke kerangka kerja node-db-migrate yang perlu menggunakan paket npm db-migrate-mysql yang kami instal sebelumnya untuk terhubung ke database

Jika Anda melewatkan langkah itu, Anda mungkin menghadapi pesan kesalahan berikut nanti

[ERROR] Error: No such driver found, please try to install it via npm install db-migrate-mysql or npm install -g db-migrate-mysql

Alih-alih -g, disarankan untuk menggunakan flag -s sebagai gantinya untuk menyimpan ketergantungan db-migrate-mysql dalam paket proyek. file json

Membuat Skrip Migrasi baru

Kita dapat membuat skrip migrasi baru dengan menjalankan perintah berikut

db-migrate create user[INFO] Created migration at /projects/payment-api/migrations/20180606161337-user.js
_

Skrip migrasi mewakili versi baru, atau status, dari database kami. Setelah memanggil perintah di atas, sebuah direktori baru dibuat berisi yang baru. file js

Skrip migrasi baru (versi skema database)

File diawali dengan stempel tanggal-waktu diikuti dengan nama yang kami berikan ke pengguna perintah db-migrate create

Menjelajahi Skrip Migrasi

Setiap kerangka migrasi biasanya memiliki dua fungsi yang dapat kita gunakan untuk mengimplementasikan migrasi kita ke atas dan ke bawah

Ke atas. Berisi kode untuk memindahkan database ke depan, atau ke atas, ke versi database berikutnya
Turun. Berisi kode untuk memindahkan database mundur, atau turun, ke versi database sebelumnya i. e. kembalikan

exports.up = function(db, callback) {
return null;
};
exports.down = function(db, callback) {
return null;
};

Kedua fungsi meneruskan instance db yang sudah terhubung, yang ditangani melalui database. file konfigurasi json yang digunakan oleh kerangka kerja node-db-migrasi. Fungsi juga mengirimkan parameter panggilan balik kedua, yang tidak segera dihapus setelah membuat skrip (dan hanya terlihat setelah mempelajari dokumentasi). Saya telah memasukkannya ke dalam cuplikan di atas. Penting untuk menyertakan parameter panggilan balik karena skrip migrasi kami tidak sinkron. Kode perlu dipanggil kembali ke kerangka kerja node-db-migrasi setelah menyelesaikan operasi basis data

Membuat Tabel Pengguna baru

Mari buat tabel baru menggunakan skrip migrasi kami. Dokumentasi menguraikan semua fungsi manipulasi SQL yang tersedia. Kita akan menggunakan fungsi db#createTable dan db#dropTable

exports.up = function(db, callback) {  db.createTable('user', {
id: {
type: 'int',
primaryKey: true
},
full_name: {
type: 'string',
length: 40
},
dob: {
type: 'date'
},
email: {
type: 'string',
length: 50
},
}, function(err) {
if (err) return callback(err);
return callback();
});
};exports.down = function(db, callback) { db.dropTable('user', callback);};
_

Kode kita harus membuat tabel baru saat kita memindahkan versi database ke depan dan menghapus tabel saat kembali. Mari kita uji ini

db-migrate up[INFO] Processed migration 20180606161337-user
[INFO] Done

Tabel pengguna baru setelah perintah migrasi db berhasil

Tabel migrasi?

Kerangka kerja node-db-migrasi melacak skrip mana yang dijalankan melalui tabel migrasi. Ini melarang skrip yang sama berjalan dua kali. Kami dapat menjalankan kueri SELECT sederhana di atas meja untuk melihat hasil berikut

Satu baris melacak skrip migrasi pengguna kami

Menjalankan db-migrate up lagi akan menghasilkan keluaran terminal berikut

[INFO] No migrations to run
[INFO] Done
_

Kami juga dapat mencoba mengembalikan perubahan basis data kami untuk menguji fungsi turun

db-migrate down[INFO] Defaulting to running 1 down migration.
[INFO] Processed migration 20180606161337-user
[INFO] Done
_

Tabel pengguna seharusnya sudah dihapus dan tabel migrasi kita seharusnya tidak berisi baris. Bagus, kita bisa siaran langsung

Persyaratan Baru

Aplikasi telah berhasil digunakan dan semuanya berjalan. Beberapa minggu kemudian, menjadi jelas bahwa aplikasi perlu memisahkan nama_lengkap menjadi properti nama depan dan nama belakang

Sebelum menggunakan migrasi database, perubahan ini dapat dilakukan dengan menggunakan proses pengembangan berikut

  1. Masuk ke server MySQL langsung
  2. Jalankan beberapa perintah SQL untuk menambah, menghapus, dan/atau mengubah tabel dan kolom
  3. Terapkan kode aplikasi baru
  4. Mulai ulang server

Ini adalah contoh sederhana dengan SQL minimal untuk dijalankan tetapi masih membuka pintu untuk kesalahan manusia yang sederhana. Setelah melakukan perubahan ini di server yang diterapkan, setiap anggota tim juga perlu memperbarui skema database mereka secara manual sebelum melanjutkan pekerjaan pengembangan harian mereka. Jelas betapa cepatnya hal ini dapat menyebabkan proyek yang tidak dapat dipertahankan

Beruntung bagi kami, kami telah melacak skema database kami menggunakan node-db-migrate. Membuat perubahan itu sederhana

npm install --save db-migrate-mysql
_0

Kami ingin menerapkan perubahan berikut

  1. Tambahkan kolom baru bernama nama depan
  2. Tambahkan kolom baru bernama nama belakang
  3. Pindahkan semua data yang ada dari kolom full_name ke kolom nama depan dan nama belakang yang terpisah (Ini akan dieksplorasi lebih detail di artikel mendatang, untuk saat ini kita akan fokus hanya pada pembaruan definisi skema)
  4. Hapus kolom lama bernama full_name
npm install --save db-migrate-mysql
_1

Kami melewatkan migrasi data aktual dari nama_lengkap ke nama depan dan nama belakang demi kesederhanaan. Ini akan dieksplorasi dalam artikel selanjutnya

npm install --save db-migrate-mysql
_2

Tabel pengguna sekarang harus mencerminkan versi terbaru dari database kami

Kesimpulan

Artikel ini mengeksplorasi beberapa masalah yang dihadapi developer saat menggunakan database relasional seperti MySQL. Masalah ini dapat diselesaikan melalui skrip migrasi database sederhana, yang dikelola dalam hal ini oleh kerangka kerja migrasi node-db. Skrip migrasi dapat diperiksa ke dalam sistem kontrol versi favorit Anda dan dilacak dengan cara yang sama seperti kami melacak pembaruan versi kode kami

Bagaimana cara membuat skema di node js?

Buat Skema Data .
const luwak = membutuhkan('luwak');
const thingSchema = luwak. Skema({
judul. { Tipe. Tali, wajib. BENAR },
keterangan. { Tipe. Tali, wajib. BENAR },
imageUrl. { Tipe. Tali, wajib. BENAR },
identitas pengguna. { Tipe. Tali, wajib. BENAR },
harga. { Tipe. Nomor, wajib. BENAR },
modul

Bagaimana cara membuat skema di MySQL?

Langkah-langkah membuat skema di MySQL .
Buka Meja Kerja MySQL
Klik opsi Buat Skema
Berikan nama skema
Klik terapkan untuk membuat skema MySQL

Bagaimana cara menggunakan nodejs dengan MySQL?

Mulai Cepat. Cara Menggunakan MySQL di Node .
Buat proyek baru. mkdir mysql-test && cd mysql-test
Buat paket. file json. npm init -y
Instal modul mysql. npm instal mysql
Buat aplikasi. js dan salin di cuplikan di bawah ini (mengedit placeholder sebagaimana mestinya)
Jalankan file. aplikasi simpul. js

Bagaimana cara membuat skema baru di MySQL Workbench?

Buka MySQL Workbench sebagai administrator (Klik kanan, Jalankan sebagai Admin). Klik File>Buat Skema untuk membuat skema basis data. Masukkan nama untuk skema dan klik Terapkan. Di jendela Terapkan Skrip SQL ke Database, klik Terapkan untuk menjalankan perintah SQL yang membuat skema