【问题标题】:Error: Cannot read property 'send' of null错误:无法读取 null 的属性“发送”
【发布时间】:2017-12-28 05:10:06
【问题描述】:

我正在尝试构建一个注册api服务,第一步是检查用户电子邮件是否存在,如果存在服务器将发送“电子邮件存在”响应,否则用户将成功保存在数据库中(mongoDB )。

她是代码:

userRoutes.post('/signup', function(req, res) {
    if (!req.body.email ||  !req.body.password || !req.body.firstname || !req.body.lastname || !req.body.gender || !req.body.country || !req.body.town || !req.body.isTrainer) {
        res.json({ success: false, msg: 'set up required fields' });
    } else {
        var newUser = new User({
            email:      req.body.email,
            password:   req.body.password,
            firstname:  req.body.firstname,
            lastname:   req.body.lastname,
            gender:     req.body.gender,
            country:    req.body.country,
            town:       req.body.town,
            isTrainer:  req.body.isTraine   
        });

        User.find({ email: req.body.email}, function(res,err, user){
            if (err) {
                res.send({success: false, msg:'authentication error'})
                console.log(err);
            }
            else if (user.length != 0) {
                res.send({success: false, msg:'Email already exists'})
                console.log(err, 'email already exists'+email);
            }else {
                // save the user
                newUser.save(function(err) {
                if (err) {
                    console.log(err);       
                }
            res.send({ success: true, msg: 'Your account created successfully! ' });
        });
            }
        })

    }
});

我收到了这个错误:

events.js:160
      throw er; // Unhandled 'error' event
      ^

TypeError: Cannot read property 'send' of null

【问题讨论】:

  • 因为你从这里的路由“覆盖”了响应对象。 User.find({ email: req.body.email}, function(res,err, user) 相反,这样的调用应该是 User.find({ email: req.body.email}, function(err, user) 其中err 总是首先出现。没有必要像您认为自己正在做的那样“传递变量”。它们已经在“当前范围”内。
  • 感谢您的评论! +1

标签: node.js mongodb express


【解决方案1】:

原因是您有一个函数参数,其名称与父作用域中 res 的名称相同。当您在不同范围内具有相同名称的变量时,最近范围内的变量“获胜”。重命名一个或另一个,使名称是唯一的,以便您可以访问正确的变量。

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 2017-12-15
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    相关资源
    最近更新 更多