Node.js Nodejs用户注册表单错误

Node.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

我正在使用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);
    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(用户)打印打印打印[]此