2017-06-13 74 views
0

我在盡我所能去理解nodeJS/typescript及其技巧。但仍然無法弄清楚如何將我的數據庫查詢結果保存到變量中並將其返回。也許有人可以解釋我的問題/幫助我:解析mysql結果到節點j的變量

我有這樣的方法:

public getAllProducts(): ProductArray { 
    // returns IConnection from "mysql" and connect 
    this.databaseConnection.getConnection().connect(); 

    var product: any = []; 
    this.databaseConnection.getConnection().query('SELECT * FROM product', function (error: any, results:any, fields:any) { 
     if (error) throw error; 
     product.push(results); 
    }); 



    console.log(product); 
    return product; 
} 

將是很好,如果有人可以幫助我在這裏。

+1

返回產品應該在回調函數裏面(error:any,results:any,fields:any){ if(error)throw error; product.push(results);} – uonlyYOLOonce

回答

2

你不應該能夠從一個異步函數返回一個變量。你應該繼續閱讀一些關於如何對抗回撥地獄的文章。你需要這些數據的所有邏輯都應該在查詢的回調函數中。有些選項可以讓你的代碼看起來更好一點,那就是使用async.js模塊或者promises(你也可以檢查在nodeSJ 7.6.0版本上添加的async/await)

+1

Promise是要走的路,除非您準備使用新的'異步'功能在最新的節點。 – tadman

+0

好吧,謝謝你的回答! 所以作爲我想查詢一些東西,我需要做的一切功能內?從請求到響應? – trunco

+1

這就是回撥地獄長期被帶入生活,繼續前行檢查承諾如何工作以防止這種情況發生。 – itsundefined