2016-09-30 42 views
0

我尝试使用此代码同一文件中的函数变量,但我不能让变量
获取在node.js中

var haveemail = 0; 

collection.count({email: req.body.email}, function (error, count,callback)     { 
    console.log(count); 
    haveemail = count; 
}); 
console.log(haveemail) 

回答

0

的Node.js的价值以异步方式工作,这意味着之后collection.count()开始正在运行,您的console.log()调用开始,很可能在计数呼叫结束之前和您的变量设置之前。

应该将执行console.log呼叫转移到回调内部,以确保它发生后haveemail变量设置:

var haveemail = 0; 

collection.count({email: req.body.email}, function (error, count,callback) 
{ 
    console.log(count); 
    haveemail = count; 
    console.log(haveemail); 
}); 
+0

我同意你的看法,其实我想算值了侧collection.count这就是为什么我把计数值存储在haveemail中,但是我不能得到它 – Dharmesh7980

+0

@ Dharmesh7980 - 无论你想在函数外使用这个变量 - 你必须在里面做,或者使用'promises'或'async'库。否则,你不能指望它按时设置。看到这个指南,这是相当不错的:https://blog.risingstack.com/node-hero-async-programming-in-node-js/ –