Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Gunakan janji untuk memproses nilai pengembalian MySQL di node.js

Ini akan sedikit tersebar, maafkan saya.

Pertama, dengan asumsi kode ini menggunakan API driver mysql dengan benar, inilah satu cara Anda dapat membungkusnya agar berfungsi dengan janji asli:

function getLastRecord(name)
{
    return new Promise(function(resolve, reject) {
        // The Promise constructor should catch any errors thrown on
        // this tick. Alternately, try/catch and reject(err) on catch.
        var connection = getMySQL_connection();

        var query_str =
        "SELECT name, " +
        "FROM records " +   
        "WHERE (name = ?) " +
        "LIMIT 1 ";

        var query_var = [name];

        connection.query(query_str, query_var, function (err, rows, fields) {
            // Call reject on error states,
            // call resolve with results
            if (err) {
                return reject(err);
            }
            resolve(rows);
        });
    });
}

getLastRecord('name_record').then(function(rows) {
    // now you have your rows, you can see if there are <20 of them
}).catch((err) => setImmediate(() => { throw err; })); // Throw async to escape the promise chain

Jadi satu hal:Anda masih memiliki panggilan balik. Callback hanyalah fungsi yang Anda serahkan ke sesuatu untuk dipanggil di beberapa titik di masa depan dengan argumen yang dipilihnya. Jadi argumen fungsi di xs.map(fn) , (err, result) fungsi yang terlihat di node dan hasil janji dan penangan kesalahan semuanya adalah panggilan balik. Ini agak membingungkan oleh orang-orang yang merujuk pada jenis panggilan balik tertentu sebagai "panggilan balik", yang dari (err, result) digunakan di inti simpul dalam apa yang disebut "gaya penerusan lanjutan", terkadang disebut "nodeback" oleh orang yang tidak terlalu menyukainya.

Untuk saat ini, setidaknya (async/await akan datang akhirnya), Anda cukup banyak terjebak dengan panggilan balik, terlepas dari apakah Anda mengadopsi janji atau tidak.

Juga, saya akan perhatikan bahwa janji tidak segera, jelas membantu di sini, karena Anda masih memiliki panggilan balik. Janji hanya benar-benar bersinar ketika Anda menggabungkannya dengan Promise.all dan akumulator janji ala Array.prototype.reduce . Tapi mereka melakukannya bersinar kadang-kadang, dan mereka adalah layak dipelajari.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perulangan Melalui Hasil SQL di PHP - Tidak mendapatkan Seluruh Array

  2. Bagaimana cara mempercepat SELECT .. LIKE query di MySQL pada banyak kolom?

  3. kueri php untuk lintang dan bujur iOS tidak mencari lintang dan bujur mysql terdekat dengan keluaran xml

  4. Laravel OrderDengan jumlah hubungan

  5. Tidak dapat membuat pemicu MySQL dengan hak TRIGGER pada 5.1.32