学习《Nodejs开发指南》中,用户注册 功能不正常了。TypeError: undefined is not a function
发布于 10 年前 作者 namletneg 6409 次浏览 最后一次编辑是 8 年前 来自 问答

跟着Nodejs 开发指南 书中的 microblog 项目开发,注册功能遇到问题了,求教大神们。。。 user.js的代码段: untitled1.png index.js的代码段: untitled2.png 结果显示: untitled4.png

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版本,很久的了

回到顶部