2017-09-14 38 views
0

我需要表的最大id並且想要訪問該值以插入到另一個表中,但我無法在回調函數外部訪問它。如何在塊外部訪問此值?如何將Node的最大id值賦給Node.js中的一個變量

我正在使用Sequelize和Node.js.我的代碼是:

var employeeCode = 'EMP1'; 

var employeeCodeObj = Employee.max('id').then(function(max) { 
    var maxid = max + 1; 
    employeeCode = "EMP" + maxid; 
    console.log(employeeCode); 
}).catch(err => { 
    res.send({ 
    msg: 'Unable to generate employee code!', 
    status: 'Failure', 
    response: 500, 
    data: [] 
    }); 
}); 
console.log(employeeCode); 

表有一列,但是當我打印此值,它始終打印EMP1時,結果應該是EMP2

+0

你確定你的執行流是不會到你的代碼的卡腳部分? – ramasCoder

+0

是當我在我然後打印最大值()阻止它打印2,並且在它的外打印1. –

回答

2

的Node.js是異步的。

這意味着最後一個console.log會先執行,然後再執行。

max函數中的代碼將執行,其餘代碼將繼續執行。只有當計算max時,then函數纔會執行,但同時console.log已經執行。

您將需要執行需要在then函數內的max員工的代碼,或者使用像「async」這樣的模塊來幫助處理異步代碼並解決回調問題。

查看本網站:http://callbackhell.com/

+0

是,正確..the外控制檯是執行第一然後最大的查詢執行。我對諾言,defferd和q感到困惑。您能否告訴我們哪個是最新的自由職業者用於異步代碼。 –

+1

我一直在使用「異步」(http://caolan.github.io/async/)。理解和使用非常簡單。 –

+0

感謝您的幫助 –