2013-06-22 142 views
1

我試圖獲取數據,但我不知道爲什麼它不工作貓鼬findOne不執行

module.exports.addUser = function(firstName, lastName, userName, pwd, dob, email){  
    mongoose.connect('mongodb://localhost/testdb'); 

    var user = mongoose.model('user.profile', profile_schema); 

    var newuser = new user(); 
    newuser.dob = dob; 
    newuser.name.first = firstName; 
    newuser.name.last = lastName; 
    newuser.name.user = userName; 
    newuser.pwd = crypto.createHash('md5').update(pwd).digest("hex"); 
    newuser.email = email; 

    newuser.save(function (err) { 
     if (err) console.log(err); 
     // saved! 
    }); 

    user.findOne({'email':'[email protected]'}, function(err, data){ 
     console.log('here'); 
     console.log(data); 
     console.log(err); 
    }); 
    mongoose.disconnect(); 
}; 

我使用此代碼添加用戶:addUser('hii','heee','sss','123456','28/05/1991','[email protected]');

這沒關係當代碼將數據添加到數據庫中(沒有錯誤,我查了控制檯數據庫),但我不能得到任何東西(沒有日誌顯示),即使我不變的情況

user.findOne({}, function(err, data){ 
      console.log('here'); 
      console.log(data); 
      console.log(err); 
     }); 

誰能幫助我?謝謝。

+0

除了'here',你的日誌輸出是什麼? – verybadalloc

+0

控制檯上沒有'here'或任何輸出。我不知道爲什麼。 –

+0

你能檢查代碼執行嗎?在'findOne'塊 – verybadalloc

回答

1

如果沒有錯誤,您必須在保存回調中移動findOne函數。 或者向addUser添加一個參數'callback',在保存回調中調用它並使用包含findOne的函數調用addUser。

+0

謝謝。我發現了問題併發布了回覆:) –

3

最後,我明白了這個問題。 NodeJS異步工作;它不會等待很長時間的流程。所以,在我的代碼中,如果我在發出mongoose.disconnect命令時不小心,一些任務不能完成他們的工作。只需將該命令放入我工作的最後一次回調(findOne函數回調)中,就可以使所有工作都成功。

newuser.save(function (err, doc) { 
     console.log('nothing'); 
     if (err) console.log(err); 
     user.findOne({'email':'[email protected]'}, function(err, data){ 
      console.log('here'); 
      console.log(data); 
      console.log(err); 
      mongoose.disconnect(); 
     }); 
     // saved! 

    }); 

感謝大家的幫忙!