Первым параметром schema.plugin должна быть функция (паспорт-local-mon goose) - PullRequest
0 голосов
/ 28 мая 2020

Я пытался использовать на моем сервере локальный-паспортный goose. делал этот сервер с помощью обучающего видео. в обучающем видео этот же код работает отлично, но в моем случае он не работает. Хотя моя база данных подключена к mongodbatlas. но я получаю сообщение об ошибке «Первый параметр для schema.plugin() должен быть функцией», Снимок экрана с ОШИБКОЙ

Интересно, как мне использовать плагин в качестве функции! пробовал искать везде, но ничего полезного. Ниже приведен код

const express = require("express");
const mongoose = require("mongoose");
const session = require("express-session");
const passport = require("passport");
const passportLocalMongoose = ("passport-local-mongoose");

const app = express();
app.use(session({
    secret: "alpha beta gama",
    resave: false,
    saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());

mongoose.connect("mongodb+srv://admin-sumit:password@cluster0-bessu.mongodb.net/myBlog", {
   useNewUrlParser: true,
   useUnifiedTopology: true
 });

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

userSchema.plugin(passportLocalMongoose);

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

passport.use(User.createStrategy());

passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

app.get("/blog1comment", function(req, res){
    if(req.isAuthenticated()){
        res.render('blogsingle', { title: 'Express' });
    } else{
        res.redirect("/login");
    }
});

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("/");
            });
        }
    });

});

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("/");
            });
        }
    });
});

app.listen(process.env.PORT || 3000, function(){
    console.log('Server is running');
});

Пожалуйста, помогите мне в этом.

1 Ответ

0 голосов
/ 29 мая 2020

const PassportLocalMon goose = ("паспорт-местный-мон goose"); просто я не использовал там require, глупый я. теперь это решено const паспортLocalMon goose = require ("паспорт-локальный-мон goose"); это решило ее.

...