Плохой запрос в nodejs

Я использовал passportjs и passport-local-mongoose для создания регистрации пользователя. Это мой код

var express         =require("express"),
    app             =express(),
    bodyParser      =require("body-parser"),
    passport        =require("passport"),
    LocalStrategy   =require("passport-local"),
    User            =require("./models/user"),
    mongoose        =require("mongoose"),
    exphbs      =require("express-handlebars");

mongoose.connect("mongodb://localhost/lone");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
var hbs = exphbs.create({
    defaultLayout: 'main',


    partialsDir: [

        'views/partials/'
    ]
});
app.use(express.static(__dirname +"/public"))

app.engine('handlebars', hbs.engine);
app.set("view engine", "handlebars");

app.use(require("express-session")({
    secret:"You are beautiful",
    resave: false,
    saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.use(function (req,res,next) {
    res.locals.currentUser=req.user;
    next();

});
//Auth Routes
app.get("/signup",function(req,res){
    res.render("signup");
});
app.get("/",function(req,res){
res.render("home");
});
app.post("/signup",function(req,res,next){
    var newUser= new User({username: req.body.userName,name:req.body.firstName,email:req.body.email});
    User.register(newUser, req.body.password, function(err,user){
        if (err){
            console.log(err);
            res.redirect("/login")
            return next();
        }
        passport.authenticate("local")(req,res,function(){

            res.redirect("/");
            return next();
        });
    })
});
app.get("/login",function(req,res){
    res.render("login");
});
app.get("/logout",function(req,res){
    req.logout();
    res.redirect("/");
});
app.get("/",function (req,res) {
    res.render("home");

});
app.listen(3000,function(){
    console.log("started");

});

Когда я нажимаю кнопку подтверждения регистрации, я получаю сообщение об ошибке " неверный запрос". и это сообщение, которое я получаю в своей консоли { [UserExistsError: пользователь с указанным именем пользователя уже зарегистрирован] name: 'UserExistsError', сообщение: 'пользователь с данным именем пользователя уже зарегистрирован' }

2 ответа

Нет ничего плохого в вашем коде.

Вы пытаетесь зарегистрировать пользователя, имя пользователя которого уже занято. Вы можете справиться с этим более изящно так:

app.post("/signup",function(req,res,next){
  var newUser= new User({username: req.body.userName,name:req.body.firstName,email:req.body.email});
  User.register(newUser, req.body.password, function(err,user){
    if (err){
        console.log(err);
        return next(err);
    }
    passport.authenticate("local", function(_err, user){
        if(_err) return next(_err);
        res.redirect("/");
        return next();
    });
  })
});

Я получаю ту же ошибку, эта ошибка не от имени пользователя, который уже зарегистрирован. Это потому, что ваш адрес электронной почты уже зарегистрирован в базе данных.

Другие вопросы по тегам