sql >> Databasteknik >  >> RDS >> Mysql

Hur får man ett värde från mysql-frågan utanför frågesatsen?

tl;dr allt händer i en återuppringning.

Du snubblar på den asynkrona naturen hos Javascript. När din console.log(value); anropet körs, är frågan (nödvändigtvis) inte slutförd. Så det finns inget sätt för resultatet av frågan att vara tillgängligt vid den tidpunkten.

Många utvecklare använder ett mönster som detta, med en återuppringningsfunktion för att hantera nästa steg när frågeresultatet kommer.

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 objekt gör den här typen av saker lättare att läsa i node.js. Men att förklara dem är i alla fall utanför ramen för ett Stack Overflow-svar.



  1. Mysql PDO maximal LONGBLOB datalängd vid hämtning

  2. FGCB_ADD_REMOVE-spärren

  3. Rails på OSX 10.11 El Capitan:Biblioteket är inte laddat:libmysqlclient.18.dylib

  4. Begår mysql_query allt