我得到包含下面的代碼文件newuser.js(node.js的環境特色通過貓鼬管理MongoDB數據庫):Node.js的:數據庫查詢後未定義返回值
//newuser.js
//基本上在數據庫中創建新的用戶文檔,並採取了GET參數和外部產生的隨機碼(見randomcode.js)
[...]
var randomCode = require ('randomcode');
var newTempUser = new tempUser({name: req.body.name, vericode: randomCode.randomveriCode(parameter)
});
newTempUser.save(function (err){
//some output
});
//randomcode.js
//創建字符(= vericode),如果代碼在DB中已存在的檢查的隨機序列,並重新啓動功能若然或返回生成的代碼
exports.randomveriCode = function randomveriCode(parameter){
[...]
var TempUser = conn.model('TempUser', TempUserSchema);
TempUser.count({vericode: generatedcode}, function(err, counter){
if (counter=='0'){
return generatedcode;
}else{
randomveriCode(parameter);
}
});
};
問題是,newuser.js引發錯誤可變vericode是'未定義'(因此貓鼬模型驗證失敗)。如果我跳過數據庫查詢並立即返回生成的代碼(事實上它已經通過幾個console.log指令驗證了值),則不會發生該錯誤。我發現數據庫查詢需要很長時間,並且在查詢完成之前返回空值或空值?我想過介紹承諾,除非你有任何其他的建議或暗示可能會導致這種行爲? 親切的問候
伊戈爾
我明白了......猜猜我必須仔細看看node.js的回調結構......現在工作。謝謝 – 2014-09-02 12:21:43