Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Użyj obietnicy, aby przetworzyć wartość zwracaną przez MySQL w node.js

To będzie trochę rozproszone, wybacz mi.

Po pierwsze, zakładając, że ten kod poprawnie używa interfejsu API sterownika mysql, oto jeden ze sposobów, w jaki można go otoczyć, aby działał z natywną obietnicą:

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

Więc jedno:nadal masz oddzwonienia. Wywołania zwrotne to po prostu funkcje, które przekazujesz do czegoś do wywołania w pewnym momencie w przyszłości z wybranymi przez niego argumentami. Więc argumenty funkcji w xs.map(fn) , (err, result) funkcje widoczne w węźle, wynik obietnicy i obsługa błędów są wywołaniami zwrotnymi. Jest to nieco zdezorientowane przez ludzi, którzy odnoszą się do określonego rodzaju wywołań zwrotnych jako „callbacks”, tych z (err, result) używany w rdzeniu węzła w tak zwanym „stylu z przekazywaniem kontynuacji”, czasami nazywanym „węzłami zwrotnymi” przez osoby, które tak naprawdę ich nie lubią.

Przynajmniej na razie (async/await w końcu nadejdzie) utkniesz z wywołaniami zwrotnymi, niezależnie od tego, czy przyjmujesz obietnice, czy nie.

Ponadto zauważę, że obietnice nie są tutaj od razu, oczywiście pomocne, ponieważ nadal masz oddzwonienie. Obietnice naprawdę błyszczą tylko wtedy, gdy połączysz je z Promise.all i obiecuję akumulatory a la Array.prototype.reduce . Ale tak czasami świecą i warte nauki.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połączenie krzyżowe między wieloma schematami w MySQL. Przywileje i wydajność

  2. Zmień format wyświetlania pola daty i czasu w MySQL PHP

  3. MySQL:ustawienie trybu sql_mode na stałe

  4. Jak formatować liczby w MySQL

  5. Python łączy się z bazą danych MySQL za pomocą złącza MySQL i przykładu PyMySQL