Реализация промежуточного программного обеспечения не работает для некоторых маршрутов - PullRequest
0 голосов
/ 28 мая 2020

В моем проекте у меня есть 2 разные функции, выступающие в качестве промежуточного программного обеспечения, которые находятся в отдельном файле в отдельном каталоге, и я импортировал их в свои файлы маршрутов. Однако одна из функций выполняется правильно, в то время как другая выдает ошибку

Первая функция промежуточного программного обеспечения (которая работает правильно): -

isLoggedIn : function(req,res,next){
        if(req.isAuthenticated()){
            return next();
        }
        res.redirect("/login");
    },

Другая функция (не работает) : -

checkCampgroundOwnership : function(req,res,next){
        if(req.isAuthenticated()){
                Campground.findById(req.params.id, function(err,foundCamp){
                    if(err){
                        res.redirect("back");
                    }
                    else{
                        if(foundCamp.author.id.equals(req.user._id)){
                            return next();
                        }
                        else{
                            res.redirect("back");
                        }
                    }
                })
            }
            else{
                res.redirect("back");
            }
        }

Я использую их в своих маршрутах следующим образом: -

router.post("/", middleware.isLoggedIn, function(req,res){
    req.body.description = req.sanitize(req.body.description);
    Campground.create(req.body.camp, function(err,created){
        if(err){
            console.log(err);
        }
        else{
            created.author.id = req.user.id;
            created.author.username = req.user.username;
            created.save();
            res.redirect("/campgrounds");
        }
    })
})

router.put("/:id", middleware.checkCampgroundOwenership, function(req,res){
    Campground.findByIdAndUpdate(req.params.id, req.body.camp, function(err,result){
        if(err){
            console.log(err)
        }
        else{
            res.redirect("/campgrounds/"+ req.params.id);
        }
    })
})

Возникает следующая ошибка: -

Ошибка: Route.get () требует функции обратного вызова, но получил [объект не определен]

В чем проблема и как ее решить

Ответы [ 2 ]

1 голос
/ 28 мая 2020

У вас есть опечатка:

Вы набрали: checkCampgroundOwenership

Должно быть: checkCampgroundOwnership

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

Вы должны объявить свои isLoggedIn и checkCampgroundOwnership следующим образом:

exports.isLoggedIn = (req, res, next) => {
   //your code...
};

Таким образом, вы можете импортировать в свой файл маршрутов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...