错误:无法读取null的属性'send'

时间:2017-07-22 01:17:16

标签: node.js mongodb express

我正在尝试构建一个注册api服务,第一步是检查用户电子邮件是否存在,如果存在,服务器将发送“email exists”响应,否则用户将成功保存在数据库中(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

1 个答案:

答案 0 :(得分:1)

原因是你有一个函数参数,其名称隐含了父作用域中res的名称。如果在不同范围内具有相同名称的变量,则最接近范围内的变量将获胜。"重命名一个或另一个,以便名称是唯一的,以便您可以访问正确的变量。