Saya telah menggunakan node mysql baru-baru ini. Saya menemukan masalah yang (jika saya mengerti dengan benar) yang telah disinggung Dave sebelumnya (https. //grup. google. com/d/msg/node-red/JtzNMLN2NpA/vU9SkvK3HwAJ). Dalam database saya, saya telah menetapkan kolom untuk memiliki nilai unik. Akibatnya, upaya untuk memasukkan nilai duplikat ke dalam tabel ditolak oleh database. Masalahnya adalah tidak ada kesalahan yang terjadi di sini - dalam kode, itu jelas sebuah simpul. memperingatkan yang digunakan. Karena itu, saya tidak dapat menangkap kesalahan dan menanggapinya. Show
Bagi saya, aliran saya masuk akal; . Oke, jadi bagian kedua dari ini adalah meskipun saya masuk dan mengedit node mysql (ln 106) ke node. kesalahan alih-alih simpul. peringatkan, saya masih belum Menangkap apa pun di Catch-node saya. Debug menunjukkan bahwa saya telah berhasil mengubah node. memperingatkan ke node. kesalahan, meskipun. Apa yang saya lewatkan, saya bertanya-tanya? Ini adalah tutorial 8º dari rangkaian lengkap membangun produksi "NodeJS API menggunakan Express, MySQL, dan Sequelize" Kode sumber lengkap kelas ini tersedia di GitHub Martial Arts API Bagian 8 Foto oleh Sarah Kilian di UnsplashHANDLING ERRORSetelah semua operasi CRUD dari tutorial sebelumnya, kita mungkin memiliki cara untuk menampilkan pesan kesalahan yang berarti kepada pengguna jika sesuatu yang buruk terjadi. Pesan ini juga akan berguna bagi Anda sebagai seorang programmer Kami melakukan permintaan kami di dalam blok Ini adalah contoh untuk metode Kami pertama kali menampilkan kesalahan di konsol, sehingga Anda sebagai programmer juga dapat memahami apa yang salah. Dan setelah semua kami menampilkan kesalahan ini dalam respons sebagai kesalahan server internal 500 (sesuatu yang buruk terjadi dalam permintaan server) SEMUA PERMINTAANSaya akan menempelkan intinya di sini dengan semua kesalahan penanganan operasi CRUD Anda akan melihat bahwa dalam metode Mari kita uji kesalahan kita Menampilkan permintaan GET mengembalikan kesalahan "Database tidak dikenal 'martial_art'" KESIMPULANDengan semua itu, bayangkan. Anda sudah dapat melakukan semua operasi CRUD di database Anda melalui kesalahan penanganan API Anda Ini adalah simpul. driver js untuk mysql. Itu ditulis dalam JavaScript, tidak memerlukan kompilasi. Ini menyediakan hampir semua koneksi/permintaan dari MySQL. Node-mysql mungkin adalah salah satu modul terbaik yang digunakan untuk bekerja dengan database MySQL dan modul tersebut dipelihara secara aktif Kami berasumsi bahwa Anda telah menginstal MySQL dan node. js di lingkungan Windows atau Linux Berikut adalah contoh untuk mengambil baris pertama dari tabel 'karyawan' milik database ''
Keluaran { EMPLOYEE_ID: 100, FIRST_NAME: 'Steven', LAST_NAME: 'King', EMAIL: '[email protected]', PHONE_NUMBER: '515.123.4567', HIRE_DATE: Wed Jun 17 1987 00:00:00 GMT+0530 (India Standard Time), JOB_ID: 'AD_PRES', SALARY: 24000, COMMISSION_PCT: 0, MANAGER_ID: 0, DEPARTMENT_ID: 90 }_ Dari contoh di atas Anda dapat mempelajari cara membuat sambungan baru dan menutup sambungan Isi Instal node MySQL. driver js
Anda dapat menginstal versi terbaru dari Github untuk memeriksa apakah perbaikan bug berfungsi. Dalam hal ini gunakan perintah berikut
Buat koneksiBerikut adalah kode untuk membuat koneksi _Berikut adalah metode lain untuk membuat koneksi dengan menjalankan kueri
Opsi Koneksi NameDescriptionhostNama host dari database. Standarnya adalah localhost. portNomor port yang akan dihubungkan. Standarnya adalah 3306. localAddressAlamat IP sumber yang akan digunakan untuk koneksi TCP. (Opsional)socketPathJalur ke soket domain unix yang akan dihubungkan. Saat digunakan host dan port diabaikan. userPengguna MySQL untuk mengotentikasi sebagai. kata sandi Kata sandi pengguna MySQL itu. databaseName dari database yang akan digunakan untuk koneksi ini (Opsional). charsetCharset untuk koneksi. Ini disebut "pemeriksaan" di tingkat SQL MySQL (seperti utf8_general_ci). Jika charset level SQL ditentukan (seperti utf8mb4) maka susunan default untuk charset itu digunakan. (Bawaan. 'UTF8_GENERAL_CI')timezoneZona waktu yang digunakan untuk menyimpan tanggal lokal. Default adalah. 'lokal'. connectTimeoutMilidetik sebelum batas waktu terjadi selama koneksi awal ke server MySQL. (Bawaan. 10 detik)stringifyObjectsStringify objek alih-alih mengonversi ke nilai. Lihat edisi #501. (Bawaan. 'false')insecureAuthAllow terhubung ke instance MySQL yang meminta metode autentikasi lama (tidak aman). (Bawaan. false)typeCastMenentukan apakah nilai kolom harus dikonversi ke tipe JavaScript asli. (Bawaan. true)queryFormatFungsi format kueri kustom. Lihat Format khusus. supportBigNumbersKetika berhadapan dengan angka besar (BIGINT dan kolom DECIMAL) dalam database, Anda harus mengaktifkan opsi ini (Default. Salah). bigNumberStringsMengaktifkan supportBigNumbers dan bigNumberStrings memaksa angka besar (kolom BIGINT dan DECIMAL) untuk selalu dikembalikan sebagai objek JavaScript String (Default. Salah) Catatan. Nilai kueri pertama kali dicoba untuk diuraikan sebagai JSON, dan jika gagal dianggap sebagai string teks biasa Mengakhiri koneksi Ada dua cara untuk mengakhiri koneksi
Anda dapat mengakhiri koneksi dengan memanggil metode end() _Ini akan memastikan semua permintaan enqueued sebelumnya masih sebelum mengirim paket COM_QUIT ke server MySQL. Jika kesalahan fatal terjadi sebelum paket COM_QUIT dapat dikirim, argumen err akan diberikan ke panggilan balik, tetapi koneksi akan diakhiri terlepas dari itu menghancurkan() metode Metode ini segera mengakhiri koneksi. Selain itu, destroy() menjamin bahwa tidak ada lagi peristiwa atau panggilan balik yang akan dipicu untuk koneksi tersebut
Tidak seperti end() metode destroy() tidak menerima argumen callback Mengalihkan pengguna / mengubah status koneksi MySQL menawarkan perintah changeUser yang memungkinkan Anda untuk mengubah pengguna saat ini dan aspek koneksi lainnya tanpa mematikan soket yang mendasarinya _Pilihan yang tersedia NameDescriptionuserNama pengguna baru (default ke yang sebelumnya). kata sandiKata sandi pengguna baru (default ke yang sebelumnya). charsetCharset baru (default dari yang sebelumnya). database Database baru (default ke yang sebelumnya) Efek samping yang terkadang berguna dari fungsi ini adalah bahwa fungsi ini juga menyetel ulang status koneksi apa pun (variabel, transaksi, dll. ) Kesalahan yang ditemui selama operasi ini dianggap sebagai kesalahan koneksi yang fatal oleh modul ini Penanganan kesalahanAda beberapa opsi untuk menangani kesalahan dalam modul ini Semua kesalahan yang dibuat oleh modul ini adalah turunan dari objek Kesalahan JavaScript. Selain itu mereka datang dengan dua properti
Kesalahan fatal disebarkan (menyebabkan dikalikan dengan proses apa pun) ke semua panggilan balik yang tertunda. Pada contoh di bawah ini, kesalahan fatal dipicu dengan mencoba nama pengguna yang tidak valid. Oleh karena itu, dalam contoh berikut, objek error disebarkan ke kedua callback yang tertunda _Keluaran { EMPLOYEE_ID: 100, FIRST_NAME: 'Steven', LAST_NAME: 'King', EMAIL: '[email protected]', PHONE_NUMBER: '515.123.4567', HIRE_DATE: Wed Jun 17 1987 00:00:00 GMT+0530 (India Standard Time), JOB_ID: 'AD_PRES', SALARY: 24000, COMMISSION_PCT: 0, MANAGER_ID: 0, DEPARTMENT_ID: 90 }_0 Dalam contoh ini, kesalahan fatal dipicu oleh pengguna yang tidak valid { EMPLOYEE_ID: 100, FIRST_NAME: 'Steven', LAST_NAME: 'King', EMAIL: '[email protected]', PHONE_NUMBER: '515.123.4567', HIRE_DATE: Wed Jun 17 1987 00:00:00 GMT+0530 (India Standard Time), JOB_ID: 'AD_PRES', SALARY: 24000, COMMISSION_PCT: 0, MANAGER_ID: 0, DEPARTMENT_ID: 90 }_1 Keluaran { EMPLOYEE_ID: 100, FIRST_NAME: 'Steven', LAST_NAME: 'King', EMAIL: '[email protected]', PHONE_NUMBER: '515.123.4567', HIRE_DATE: Wed Jun 17 1987 00:00:00 GMT+0530 (India Standard Time), JOB_ID: 'AD_PRES', SALARY: 24000, COMMISSION_PCT: 0, MANAGER_ID: 0, DEPARTMENT_ID: 90 }_2 Kesalahan normal hanya didelegasikan ke callback tempatnya. Dalam contoh berikut, hanya panggilan balik pertama yang menerima kesalahan (nama db salah), kueri kedua berfungsi seperti yang diharapkan { EMPLOYEE_ID: 100, FIRST_NAME: 'Steven', LAST_NAME: 'King', EMAIL: '[email protected]', PHONE_NUMBER: '515.123.4567', HIRE_DATE: Wed Jun 17 1987 00:00:00 GMT+0530 (India Standard Time), JOB_ID: 'AD_PRES', SALARY: 24000, COMMISSION_PCT: 0, MANAGER_ID: 0, DEPARTMENT_ID: 90 }_3Server terputus Anda mungkin kehilangan koneksi ke server MySQL karena masalah jaringan, server kehabisan waktu, server sedang dimulai ulang, atau mogok. Semua kejadian ini dianggap sebagai kesalahan fatal, dan akan memiliki kesalahan. kode = 'PROTOCOL_CONNECTION_LOST'. Lihat bagian Penanganan Kesalahan untuk informasi lebih lanjut Menghubungkan kembali koneksi dilakukan dengan membuat koneksi baru. Setelah diakhiri, objek koneksi yang ada tidak dapat dihubungkan kembali dengan desain Dengan Pool, koneksi yang terputus akan dihapus dari pool membebaskan ruang untuk membuat koneksi baru pada panggilan getConnection berikutnya Opsi SSLOpsi ssl dalam opsi koneksi mengambil string atau objek. Saat diberi string, ia menggunakan salah satu profil SSL standar yang disertakan. Profil berikut disertakan
Saat terhubung ke server lain, Anda perlu menyediakan objek opsi, dalam format yang sama dengan crypto. createCredentials. Harap perhatikan argumen mengharapkan string sertifikat, bukan nama file ke sertifikat. Ini adalah contoh sederhana { EMPLOYEE_ID: 100, FIRST_NAME: 'Steven', LAST_NAME: 'King', EMAIL: '[email protected]', PHONE_NUMBER: '515.123.4567', HIRE_DATE: Wed Jun 17 1987 00:00:00 GMT+0530 (India Standard Time), JOB_ID: 'AD_PRES', SALARY: 24000, COMMISSION_PCT: 0, MANAGER_ID: 0, DEPARTMENT_ID: 90 }_4 Anda juga dapat terhubung ke server MySQL tanpa menyediakan CA yang sesuai untuk dipercaya. Anda seharusnya tidak melakukan ini { EMPLOYEE_ID: 100, FIRST_NAME: 'Steven', LAST_NAME: 'King', EMAIL: '[email protected]', PHONE_NUMBER: '515.123.4567', HIRE_DATE: Wed Jun 17 1987 00:00:00 GMT+0530 (India Standard Time), JOB_ID: 'AD_PRES', SALARY: 24000, COMMISSION_PCT: 0, MANAGER_ID: 0, DEPARTMENT_ID: 90 }5 { EMPLOYEE_ID: 100, FIRST_NAME: 'Steven', LAST_NAME: 'King', EMAIL: '[email protected]', PHONE_NUMBER: '515.123.4567', HIRE_DATE: Wed Jun 17 1987 00:00:00 GMT+0530 (India Standard Time), JOB_ID: 'AD_PRES', SALARY: 24000, COMMISSION_PCT: 0, MANAGER_ID: 0, DEPARTMENT_ID: 90 }5 Menggabungkan koneksiKumpulan koneksi adalah cache dari koneksi database yang dipertahankan sehingga koneksi dapat digunakan kembali saat permintaan ke database di masa mendatang diperlukan. Kumpulan koneksi digunakan untuk meningkatkan kinerja mengeksekusi perintah pada database Gunakan kolam secara langsung { EMPLOYEE_ID: 100, FIRST_NAME: 'Steven', LAST_NAME: 'King', EMAIL: '[email protected]', PHONE_NUMBER: '515.123.4567', HIRE_DATE: Wed Jun 17 1987 00:00:00 GMT+0530 (India Standard Time), JOB_ID: 'AD_PRES', SALARY: 24000, COMMISSION_PCT: 0, MANAGER_ID: 0, DEPARTMENT_ID: 90 }_7 Ketika Anda selesai dengan koneksi, panggil saja koneksi. release() dan koneksi akan kembali ke pool, siap digunakan lagi oleh orang lain { EMPLOYEE_ID: 100, FIRST_NAME: 'Steven', LAST_NAME: 'King', EMAIL: '[email protected]', PHONE_NUMBER: '515.123.4567', HIRE_DATE: Wed Jun 17 1987 00:00:00 GMT+0530 (India Standard Time), JOB_ID: 'AD_PRES', SALARY: 24000, COMMISSION_PCT: 0, MANAGER_ID: 0, DEPARTMENT_ID: 90 }_8 Jika Anda ingin menutup koneksi dan menghapusnya dari pool, gunakan connection. menghancurkan() sebagai gantinya. Pool akan membuat koneksi baru saat dibutuhkan lagi Menutup semua koneksi di kolam Ketika Anda selesai menggunakan kumpulan, Anda harus mengakhiri semua koneksi atau Node. js event loop akan tetap aktif sampai koneksi ditutup oleh server MySQL. Metode akhir mengambil panggilan balik opsional yang dapat Anda gunakan untuk mengetahui setelah semua koneksi berakhir. Koneksi berakhir dengan anggun, sehingga semua kueri yang tertunda akan tetap selesai dan waktu untuk mengakhiri kumpulan akan bervariasi. Sekali renang. end() telah dipanggil, pool. getConnection dan operasi lainnya tidak lagi dapat dilakukan Opsi kolam Pool mendukung semua opsi koneksi normal. Selain itu, berikut adalah beberapa opsi tambahan NameDescriptionacquireTimeoutMilidetik sebelum batas waktu terjadi selama akuisisi koneksi. Ini sedikit berbeda dari connectTimeout, karena memperoleh koneksi kumpulan tidak selalu melibatkan pembuatan koneksi. (Bawaan. 10 detik)waitForConnectionsMenentukan tindakan kumpulan saat tidak ada koneksi yang tersedia dan batas telah tercapai. Jika benar, kumpulan akan mengantri permintaan koneksi dan memanggilnya saat tersedia. Jika salah, kumpulan akan segera menelepon kembali dengan kesalahan. (Bawaan. true)connectionLimitJumlah maksimum koneksi yang akan dibuat sekaligus. (Bawaan. 10)queueLimitJumlah maksimum koneksi meminta kumpulan akan mengantri sebelum mengembalikan kesalahan dari getConnection. Jika diatur ke 0, tidak ada batasan jumlah permintaan koneksi yang antri. (Bawaan. 0) Acara renang koneksi Kumpulan akan memancarkan acara koneksi saat koneksi baru dibuat di dalam kumpulan. Jika Anda perlu menyetel variabel sesi pada koneksi sebelum digunakan, Anda dapat mendengarkan peristiwa koneksi { EMPLOYEE_ID: 100, FIRST_NAME: 'Steven', LAST_NAME: 'King', EMAIL: '[email protected]', PHONE_NUMBER: '515.123.4567', HIRE_DATE: Wed Jun 17 1987 00:00:00 GMT+0530 (India Standard Time), JOB_ID: 'AD_PRES', SALARY: 24000, COMMISSION_PCT: 0, MANAGER_ID: 0, DEPARTMENT_ID: 90 }_9 enqueue Kumpulan akan memunculkan peristiwa enqueue saat callback telah diantrekan untuk menunggu koneksi yang tersedia 0Melarikan diri dari nilai kueriInjeksi SQL adalah teknik (seperti mekanisme serangan web lainnya) untuk menyerang aplikasi berbasis data. Serangan ini dapat melewati firewall dan dapat memengaruhi sistem yang telah ditambal sepenuhnya. Penyerang mengambil keuntungan dari karakter yang difilter dengan buruk atau tidak lolos dengan benar yang disematkan dalam pernyataan SQL ke dalam mem-parsing data variabel dari input pengguna. Penyerang menyuntikkan data sewenang-wenang, paling sering kueri basis data, ke dalam string yang akhirnya dieksekusi oleh basis data melalui aplikasi web (mis. g. formulir masuk) Untuk menghindari serangan SQL Injection, Anda harus selalu menghindari data yang disediakan pengguna sebelum menggunakannya di dalam kueri SQL. Anda dapat melakukannya menggunakan koneksi. escape() atau kumpulan. melarikan diri() metode 1Sebagai alternatif, Anda dapat menggunakan ? 2Jenis nilai yang berbeda diloloskan secara berbeda, berikut caranya
Berikut adalah contoh pernyataan INSERT INTO _3Anda juga dapat menggunakan fungsi pelolosan secara langsung, lihat contoh berikut _4Melarikan diri dari pengidentifikasi kueriKarena pengidentifikasi SQL (nama basis data / tabel / kolom) disediakan oleh pengguna, Anda harus menghindarinya dengan mysql. escapeId(pengidentifikasi), koneksi. escapeId(pengidentifikasi) atau kumpulan. escapeId(pengidentifikasi) seperti ini 5Ini juga mendukung penambahan pengidentifikasi yang memenuhi syarat. Itu akan lolos dari kedua bagian 6Atau, Anda dapat menggunakan ?? 7Catatan. Urutan karakter terakhir bersifat eksperimental dan sintaks mungkin berubah Saat Anda melewatkan Objek ke. melarikan diri() atau. pertanyaan(),. escapeId() digunakan untuk menghindari injeksi SQL pada kunci objek Mempersiapkan PertanyaanMySQL5. 6 memberikan dukungan untuk pernyataan yang disiapkan sisi server. Dukungan ini memanfaatkan protokol biner klien/server efisien yang tersedia sejak MySQL 4. 1. Anda dapat menggunakan mysql. format untuk menyiapkan kueri dengan beberapa titik penyisipan, memanfaatkan pelolosan yang tepat untuk id dan nilai. Contoh sederhana berikut ini _8Setelah ini, Anda kemudian memiliki kueri lolos yang valid yang kemudian dapat Anda kirim ke database dengan aman. Ini berguna jika Anda ingin menyiapkan kueri sebelum benar-benar mengirimkannya ke database. Sebagai mysql. format diekspos dari SqlString. format Anda juga memiliki opsi (tetapi tidak wajib) untuk meneruskan stringifyObject dan zona waktu, memungkinkan Anda menyediakan cara khusus untuk mengubah objek menjadi string, serta Tanggal yang spesifik lokasi/sadar zona waktu Format khususJika Anda lebih suka memiliki jenis format pelolosan kueri lain, ada opsi konfigurasi koneksi yang dapat Anda gunakan untuk menentukan fungsi format kustom. Anda dapat mengakses objek koneksi jika Anda ingin menggunakan built-in. escape() atau fungsi koneksi lainnya Berikut adalah contoh cara mengimplementasikan format lain 9Mendapatkan id dari baris yang disisipkanJika Anda memasukkan baris ke dalam tabel dengan kunci primer kenaikan otomatis, Anda dapat mengambil id penyisipan seperti ini 0Saat berhadapan dengan angka besar (di atas batas presisi Angka JavaScript), Anda harus mempertimbangkan untuk mengaktifkan opsi dukungan Angka Besar untuk dapat membaca id sisipan sebagai string, jika tidak maka akan membuang Opsi ini juga diperlukan saat mengambil angka besar dari database, jika tidak, Anda akan mendapatkan nilai yang dibulatkan menjadi ratusan atau ribuan karena batas presisi Mendapatkan jumlah baris yang terpengaruhAnda bisa mendapatkan jumlah baris yang terpengaruh dari pernyataan sisipkan, perbarui, atau hapus "changedRows" berbeda dari "affectedRows" karena tidak menghitung baris yang diperbarui yang nilainya tidak diubah 1Mendapatkan ID koneksiAnda bisa mendapatkan ID koneksi MySQL ("thread ID") dari koneksi yang diberikan menggunakan properti threadId 2Melaksanakan kueri secara paralelProtokol MySQL bersifat berurutan, ini berarti Anda memerlukan banyak koneksi untuk mengeksekusi kueri secara paralel. Anda dapat menggunakan Pool untuk mengelola koneksi, satu pendekatan sederhana adalah membuat satu koneksi per permintaan http yang masuk Streaming baris kueriTerkadang Anda mungkin ingin memilih baris dalam jumlah besar dan memproses setiap baris saat diterima. Ini bisa dilakukan seperti ini _3Harap perhatikan beberapa hal tentang contoh di atas
Selain itu, Anda mungkin tertarik untuk mengetahui bahwa saat ini tidak mungkin untuk mengalirkan kolom baris individual, mereka akan selalu disangga seluruhnya. Jika Anda memiliki kasus penggunaan yang baik untuk streaming bidang besar ke dan dari MySQL, saya ingin mendapatkan pemikiran dan kontribusi Anda tentang hal ini Beberapa pertanyaan pernyataanDukungan untuk banyak pernyataan dinonaktifkan karena alasan keamanan (ini memungkinkan serangan injeksi SQL jika nilai tidak di-escape dengan benar). Untuk menggunakan fitur ini, Anda harus mengaktifkannya untuk koneksi Anda _4Setelah diaktifkan, Anda dapat menjalankan beberapa kueri pernyataan seperti kueri lainnya 5Selain itu, Anda juga dapat mengalirkan hasil dari beberapa kueri pernyataan 6Jika salah satu pernyataan dalam kueri Anda menyebabkan kesalahan, objek Error yang dihasilkan berisi kesalahan. properti indeks yang memberi tahu Anda pernyataan mana yang menyebabkannya. MySQL juga akan berhenti menjalankan pernyataan yang tersisa saat terjadi kesalahan Harap perhatikan bahwa antarmuka untuk streaming beberapa kueri pernyataan bersifat eksperimental dan saya menantikan umpan baliknya Prosedur tersimpanAnda dapat memanggil prosedur tersimpan dari kueri Anda seperti driver mysql lainnya. Berikut adalah kode prosedur asli _7Keluaran saat dieksekusi di MySQL 8Sekarang panggil prosedur tersimpan dari node. js _9Keluaran _0BergabungAnda dapat memanggil GABUNG dari kueri Anda seperti pada driver mysql lainnya. Ini sebuah contoh Tulis kueri untuk menampilkan ID departemen, nama departemen, dan nama depan manajer. Lihat '' basis data _1Keluaran _2TransaksiMySQL (di sini kami mempertahankan versi 5. 6) mendukung transaksi lokal (dalam sesi klien tertentu) melalui pernyataan seperti SET autocommit, START TRANSACTION, COMMIT, dan ROLLBACK. Berikut adalah sintaks dari START TRANSACTION, COMMIT, dan ROLLBACK _3Di simpul. Dukungan transaksi sederhana js tersedia di tingkat koneksi _4Harap dicatat bahwa beginTransaction(), commit() dan rollback() hanyalah fungsi praktis yang mengeksekusi perintah START TRANSACTION, COMMIT, dan ROLLBACK secara berurutan. Penting untuk dipahami bahwa banyak perintah di MySQL dapat menyebabkan komit implisit, seperti yang dijelaskan dalam dokumentasi MySQL TimeoutSetiap operasi mengambil opsi batas waktu tidak aktif opsional. Ini memungkinkan Anda menentukan batas waktu yang sesuai untuk operasi. Penting untuk dicatat bahwa batas waktu ini bukan bagian dari protokol MySQL, melainkan operasi batas waktu melalui klien. Ini berarti bahwa ketika batas waktu tercapai, koneksi yang terjadi akan dimusnahkan dan tidak ada operasi lebih lanjut yang dapat dilakukan Bagaimana cara menangkap kesalahan SQL di node js?pada('akhir', fungsi(baris) { klien. end(); . json(hasil); . log(err);
Bagaimana node menangani kesalahan MySQL?query(sql, function(err, results) { if (err) { console. log(err); . kirim({ sukses. palsu, pesan. 'kesalahan permintaan', kesalahan. salah }); . melepaskan();
Bagaimana saya melihat pesan kesalahan MySQL?Pernyataan SHOW COUNT(*) ERRORS menampilkan jumlah kesalahan. Anda juga dapat mengambil nomor ini dari variabel error_count. TAMPILKAN COUNT(*) KESALAHAN; .
Bagaimana cara saya memeriksa kesalahan di node JS?Bagaimana Anda Menangani Kesalahan di Node. . Gunakan Kesalahan Kustom untuk Menangani Kesalahan Operasional. . Gunakan Middleware. . Restart Aplikasi Anda dengan Anggun untuk Menangani Kesalahan Programmer. . Tangkap Semua Pengecualian yang Tidak Tertangkap. . Tangkap Semua Penolakan Janji yang Tidak Tertangani. . Gunakan Lokasi Terpusat untuk Log dan Peringatan Kesalahan |