我正在尝试获取数据,但我不知道为什么它不起作用
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);
});
任何人都可以帮助我吗?感谢。
答案 0 :(得分:3)
最后,我理解了这个问题。 NodeJS异步工作;它不会等待很长时间的流程。因此,在我的代码中,如果我在发出mongoose.disconnect
命令时不小心,某些任务无法完成其工作。只需将该命令放在我工作的最后一个回调中(findOne函数回调),就可以使一切正常。
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!
});
感谢大家的帮助!
答案 1 :(得分:1)
如果没有错误,你必须在保存回调中移动findOne函数。 或者向addUser添加一个参数'callback',在save callback中调用它,并使用包含findOne的函数调用addUser。