簡體   English   中英

如何從查詢語句之外的mysql查詢中獲取值?

[英]How to get a value from mysql query outside the query statement?

這是功能,請參閱下面的console.log

function quo (value){
    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);// result here The role is : admin
          });
    console.log(value);
}

這里的結果是查詢對象Query {domain:null,_events:{error:.. etc} ##

我這樣調用:

quo();

tl; dr一切都發生在回調中。

您正在絆倒Javascript的異步特性。 等到你的console.log(value); 調用運行后,查詢未(必須)完成。 因此,當時無法獲得查詢結果。

許多開發人員使用這種模式,並在查詢結果到達時使用回調函數來處理下一步。

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對象使這種事情在node.js中更容易閱讀。 但是無論如何,對它們的解釋超出了堆棧溢出答案的范圍。

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 */
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM