MongooseError:尝试注册时操作`users.findOne()`

问题描述 投票:0回答:0
const express = require("express");
const mongoose = require("mongoose");
const session = require("express-session");
const passport = require("passport");
var LocalStrategy = require('passport-local');
const passportLocalMongoose = require("passport-local-mongoose");


mongoose.connect("mongodb://localhost:27017/users", {
  useNewUrlParser: "true",
})
mongoose.connection.on("error", err => {
  console.log("err", err)
})
mongoose.connection.on("connected", (err, res) => {
  console.log("mongoose is connected")
})

const app = express();

// defining the static folder
app.use(express.static("public"));
app.set('view engine','ejs');
app.use(express.urlencoded({ extended: true }));

app.use(session({
    secret: 'This is my lil secret, hehe :)',
    resave: false,
    saveUninitialized: false,
    cookie: { secure: false }
}));

const userSchema = new mongoose.Schema ({
  email: String,
  password: String,
});

userSchema.plugin(passportLocalMongoose);
const User = new mongoose.model("User", userSchema);

const strategy = new LocalStrategy(User.authenticate())
passport.use(strategy);
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.use(passport.initialize());
app.use(passport.session());

app.get("/", function(req, res){
    res.render("home");
});  

app.get('/login',function(req, res, next) {
    res.render('login');
});


app.get("/register", function(req, res){
    res.render("register");
  });
  
app.get("/secrets", function(req, res){
    if (req.isAuthenticated()){
        res.render("secrets");
    } else {
        res.redirect("/login");
    }
});

app.get("/logout", function(req, res){
    req.logout();
    res.redirect("/");
});

app.post("/register", function(req, res){
    User.register({username: req.body.username}, req.body.password, function(err, user){
        if (err) {
            console.log(err);
            res.redirect("/register");
        } else {
            passport.authenticate("local")(req, res, function(){
                res.redirect("/secrets");
            });
        }
    });
});  

app.post("/login", function(req, res){

    const user = new User({
      username: req.body.username,
      password: req.body.password
    });
  
    req.login(user, function(err){
      if (err) {
        console.log(err);
      } else {
        passport.authenticate("local")(req, res, function(){
          res.redirect("/secrets");
        });
      }
    });
  
});

app.listen(4000, function() {
    console.log("Server started on port 4000.");
});
  

我写了上面的一段代码,使用 Node、Express、Passport.js 和 Mongoose 进行身份验证。但我收到以下错误 - “MongooseError:操作

users.findOne()
缓冲在 10000 毫秒后超时”。请帮帮我。提前致谢:)

当我尝试注册时,代码没有将我带到秘密页面,而是抛出上述错误。

node.js mongodb express mongoose passport.js
© www.soinside.com 2019 - 2024. All rights reserved.