Nodejs用户registry单错误

我正在使用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"

而我的collections中没有用户。 我做错了什么?

find会返回一个Array用户,所以给你一个条件,不pipe用户是否为null []

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

如果您正在search一个用户,最好使用findOnefindOne返回单个文档而不是数组


如果用户不在数据库中,则返回null

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; 

在你的情况下, User.find将返回一个数组[]

if在空数组返回true

如果你有方法User.findOne使用,当search单个logging

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