node.js - Nodejs用户注册表单报错

标签 node.js mongodb

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

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

最佳答案

find 将返回一个 Array 用户,因此您必须满足条件,无论用户是否为 null []

比如

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

如果要搜索单个用户,最好使用 findOnefindOne 返回单个文档不是数组


如果用户不在数据库中则返回空值

使用 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;

关于node.js - Nodejs用户注册表单报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42668479/

相关文章:

javascript - Date.now() 不是 Mongodb 中的数字

mongodb - 发出前从 MongoDB 更新结果

用于 MonetDB 的 Node.js 和 ODBC

javascript - 单独的信息和错误日志

node.js - 将 json 对象传递给 zmq 服务器

node.js - Laravel Elastic Beanstalk,无法安装运行 npm?

mongodb - 如何使 Mongo 始终在我的 Azure 服务器上自动运行?

database - 如何使用 mongoimport 指定前导字段名称?

c# - MongoDB的最大容量是多少?它是完全可扩展的数据库吗?

node.js - NodeJS,console.error 是否像 console.log 一样同步?