2017-09-14 45 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

感谢您的帮助 –