0

ユーザーサインアップの作成には、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");

});

サインアップの送信ボタンをクリックすると、bad requestというエラーが表示されます。これはコンソールに表示されるメッセージです{ [UserExistsError: A user with the given username is already registered] name: 'UserExistsError', message: 'A user with the given username is already registered' }

4

2 に答える 2

0

同じエラーが発生しています。このエラーは、既に登録されているユーザー名のものではありません。これは、あなたの電子メールがすでにデータベースに登録されているためです。

于 2018-07-23T05:09:49.750 に答える