我正在使用 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"
而我的收藏中没有用户。我做错了什么?
最佳答案
find
将返回一个 Array 用户,因此您必须满足条件,无论用户是否为 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;
关于node.js - Nodejs用户注册表单报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42668479/