2016-09-30 43 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/ –