2017-03-08 20 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"

を取得しています。私は間違って何をしたのですか?あなたが探している場合は、ユーザーが[]かnullであるかどうか、など

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

として

を条件を作りましたので、

+0

は 'にconsole.log(ユーザー)何をするときに使用することをUser.findOne方法がある場合は、'プリントを –

+0

それは[]これを印刷します –

答えて

1

findは、アレイのユーザーを返します。 1人のユーザーより使用する方が良いfindOnefindOne単一の文書が配列ではない


ユーザーはそれがヌル

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空の配列はtrueを返します

あなたは、単一のレコードの検索

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');