我正在使用MEAN堆栈进行虚拟学习项目。我现在遇到了问题。
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);
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 already exist"
我的收藏中没有用户。我做错了什么?
答案 0 :(得分:1)
find
将返回一个Array用户,因此您已经创建条件,无论用户是否为[]
,
,例如
if (user.length > 0) {
res.send("User already exist");
} else {
// do your stuffs
}
如果您要搜索一位用户,最好使用 findOne
, findOne
会返回单个文档而不是数组
如果用户不在数据库中,则返回null
<强> Use findOne instead of 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;
答案 1 :(得分:0)
User.find
在您的情况下返回一个数组为空数组[]
。
if
返回true
如果你有方法User.findOne
在搜索单个记录时使用它
var users = [];
if (users)
console.log('Check1: User found');
else
console.log('Check1: User not found');
// Use below code
if (users && users.length > 0)
console.log('Check2: User found');
else
console.log('Check2: User not found');