学习《Nodejs开发指南》中,用户注册 功能不正常了。TypeError: undefined is not a function
跟着Nodejs 开发指南 书中的 microblog 项目开发,注册功能遇到问题了,求教大神们。。。 user.js的代码段: index.js的代码段: 结果显示:
12 回复
数据库连上了吗,callback传了吗
@chloe 连上了,能写入数据库,比如注册提交后,它报错了,等再重新启动,可以用刚注册的账号登录。。。 很诡异的是 有时候能注册成功不报错。。
截图没有行号,建议楼主加上行号再截图,行号对于debug是有帮助的
@119786155 没注意看,哈哈
@namletneg 这个教程错的离谱。作者完全不懂异步代码。 我帮你改了下,你要是想接着学可以看看。
User.prototype.save = function save(callback){
var user = {
name: this.name,
password: this.password,
};
mongodb.open(function(err, db){
if(err){
return callback(err);
}
db.collection('users', function(err, collection){
if(err){
mongodb.close();
return callback(err);
}
collection.ensureIndex('name', {unique: true,safe:true},function(err,indexname){
collection.insert(user, {safe: true}, function(err, user){
mongodb.close();
return callback(err, user);
});
});
});
});
};
@namletneg 上面代码只是能跑而已,但是对异步代码的处理依然是错误的,实在是不想改这样的代码。
@eeandrew 谢谢,我试试哈
@eeandrew 成功了,十分感谢。。。能解释下是什么原因吗?
@namletneg 异步代码要通过回调处理流程。自己领悟。
@eeandrew 也就是每个处理都有一个回调函数?
里面用的express的大版本应该和现在也不同了吧。
@DavidCai1993 2.5.8版本,很久的了