2015-04-27 93 views
0
var userid = 7; 
var um; 

sequelize.query("select user_money from ecs_users u where u.user_id = ?", {replacements: [userid], type: sequelize.QueryTypes.SELECT}).then(function(data) { 
    console.log('Inside um is '+data[0].user_money); 
    um = data[0].user_money; 
}); 

//how to get the result at here ??? 
console.log('Outside um is '+um); 
console.log('testtesttest'); 

結果如何使用sequelize.js返回結果?

Outside um is undefined 

testtesttest 

info: Executing (default): select user_money from ecs_users u where u.user_id = 7 

Inside um is 0.01 

如何獲得的結果麼?

回答

0

sequelize.query()是一個異步功能。如果你想使用結果,你應該在承諾鏈內部完成,而不是在外部。您無法確切知道query()需要運行多長時間。

如果您絕對必須在承諾鏈外使用它,請創建一個布爾值,告訴您是否還有結果。只有在promise鏈中有結果後,纔將布爾值設置爲true。在承諾鏈之外,您可以檢查布爾值,並決定是否要等待(例如,使用setTimeout()再試一次)或忽略或拋出錯誤或其他內容。

+0

sequelize.query()不具有同步功能嗎? – dindinmail

+0

同步功能將鎖定您的主線程。如果你從來沒有超過一個人同時使用你的應用程序,這可能是好的。但是,由於這不是典型的,因此很多Node.js庫都不會同時使用同步函數,因爲它們最終既危險又不必要。 – Trott