我正在尝试构建一个注册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
答案 0 :(得分:1)
原因是你有一个函数参数,其名称隐含了父作用域中res
的名称。如果在不同范围内具有相同名称的变量,则最接近范围内的变量将获胜。"重命名一个或另一个,以便名称是唯一的,以便您可以访问正确的变量。