sql >> Database >  >> RDS >> Mysql

Hoe krijg ik een waarde van mysql-query buiten de query-instructie?

tl;dr alles gebeurt in een terugbelverzoek.

Je struikelt over de asynchrone aard van Javascript. Tegen de tijd dat uw console.log(value); oproep wordt uitgevoerd, is de query niet (noodzakelijkerwijs) voltooid. Het is dus niet mogelijk dat het resultaat van de zoekopdracht op dat moment beschikbaar is.

Veel ontwikkelaars gebruiken een patroon als dit, met een callback-functie om de volgende stap af te handelen wanneer het queryresultaat binnenkomt.

function quo (success){
    value = connection.query(
       'SELECT role from `roles` where `id` = 1' , 
       function (error, results, fields) {
           if (error) throw error;
           console.log('The role is: ', results[0].role);
           success (results[0].role);
       });
}

quo (function (role) {
   console.log(role);
   /* do something useful with the role that came back from the query */
});

Promise objecten maken dit soort dingen gemakkelijker te lezen in node.js. Maar ze uitleggen valt sowieso buiten het bestek van een Stack Overflow-antwoord.



  1. Fout bij gebruik van aangepaste DQL-functie met Doctrine en Symfony2

  2. DBMS_JOB versus DBMS_SCHEDULER

  3. waarom werkt deze mysql-query niet?

  4. GROUP_CONCAT met JOINLEFT in Zend Db Select