mongoosefindOne不执行

我试图获取数据,但我不知道为什么它不工作

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':'abc@gmail.com'}, function(err, data){ console.log('here'); console.log(data); console.log(err); }); mongoose.disconnect(); }; 

我使用这个代码来添加用户: addUser('hii','heee','sss','123456','28/05/1991','abc@gmail.com');

代码将数据添加到数据库(没有错误,我在控制台上检查数据库),但没有任何东西(没有显示日志),即使我改变了条件

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

谁能帮我? 谢谢。

最后,我明白了这个问题。 NodeJSasynchronous工作; 它不会等待很长时间的stream程。 所以,在我的代码中,如果我在发出mongoose.disconnect命令时不小心,有些任务不能完成工作。 只要把这个命令放在我工作的最后一个callback(findOne函数callback)中,就可以使所有的东西都起作用。

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

感谢大家的帮助!

如果没有错误,您必须在保存callback中移动findOne函数。 或者向addUser添加一个参数'callback',在保存callback中调用它,并用包含你的findOne的函数调用addUser。