2017-03-08 82 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');