Node.js Nodejs用户注册表单错误
我正在使用MEAN stack制作一个虚拟学习项目。我现在遇到了一个问题 index.controller.jsNode.js Nodejs用户注册表单错误,node.js,mongodb,Node.js,Mongodb,我正在使用MEAN stack制作一个虚拟学习项目。我现在遇到了一个问题 index.controller.js var User = require("../models/user"); controller.registerUser = function(req,res){ User.find({ 'email' : req.body.email }, function(err, user){ console.log(req.body.email); con
var User = require("../models/user");
controller.registerUser = function(req,res){
User.find({
'email' : req.body.email
}, function(err, user){
console.log(req.body.email);
console.log(user);
if(user){
res.send("User already exist");
}else{
var userModel = new User();
userModel.email = req.body.email.toLowerCase();
userModel.password = userModel.generateHash(req.body.password);
userModel.save(function(err, data) {
if (err) {
res.send("Error Occurred");
} else {
res.send("User Created");
}
});
}
});
};
module.exports = controller;
每次我都会得到回复
“用户已经存在”
而我的收藏中没有用户。我做错了什么?
find
将返回一个数组用户,因此您必须设置条件,无论用户是否为null[]
比如
if (user.length > 0) {
res.send("User already exist");
} else {
// do your stuffs
}
如果要搜索一个用户,最好使用
findOne
,findOne
返回单个文档,而不是数组
如果用户不在数据库中,则返回空值
使用findOne而不是find
var User = require("../models/user");
controller.registerUser = function(req,res){
User.findOne({
'email' : req.body.email
}, function(err, user){
console.log(req.body.email);
console.log(user);
if(user){
res.send("User already exist");
}else{
var userModel = new User();
userModel.email = req.body.email.toLowerCase();
userModel.password = userModel.generateHash(req.body.password);
userModel.save(function(err, data) {
if (err) {
res.send("Error Occurred");
} else {
res.send("User Created");
}
});
}
});
};
module.exports = controller;
User.find
在您的情况下返回一个数组,即空数组[]
if
在空数组上返回true
如果您有方法User.findOne
在搜索单个记录时使用该方法
var用户=[];
如果(用户)
log('Check1:User found');
其他的
log('Check1:User not found');
//使用下面的代码
if(users&&users.length>0)
log('Check2:User found');
其他的
log('Check2:找不到用户')代码>什么是console.log(用户)代码>打印打印打印[]此