2017-03-08 78 views
2

我正在使用MEAN堆栈制作一个虚拟学习项目。我现在陷入了一个问题。Nodejs用户注册表单错误

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

什么呢'的console.log(用户);'打印 –

+0

它打印】这个 –

回答

1

find会返回一个数组的用户,所以你必须做的情况下,用户是否为空[]与否,

if (user.length > 0) { 
    res.send("User already exist"); 
} else { 
// do your stuffs 
} 

如果您正在搜索的一个用户最好使用findOne,findOne返回单个文档而不是数组


如果用户没有在数据库中,它返回空

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; 
0

User.find返回的情况下,空数组[]阵列。

if on empty array returns 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');