[英]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.