IDONTSUDO
@IDONTSUDO
ЧСВ программистов идет в комплекте с первой IDE.

Express router params(), как передать функцию?

Я пытаюсь установить, параметры для обработки маршрута. Но express пишет.

invalid param() call for userId, got undefined


Сам express в официальной документации просто делает функцию обработчик. Это баг или фича? Или я что то написал не так? Если я в дальнешем просто обьявляю функцию то это работает. Но я думаю возможно есть более качественное решение?

Я пытался указать намеренно

const router = express.Router({mergeParams: true});

Но это не помогло

Сode.

------------------> routes user.js //роутер
    const express = require("express")
    
    const router = express.Router()
    const { UserById, allUsers } = require("../controllers/user")
    //при помощи деструктаризации вытаскиваем  две функции
    
    router.get('/users',  allUsers) //функция allUsers обслуживает маршрут  /users
    
    router.param('userId', UserById)//то что не работает UserById обслуживает параметры принемаемых запросов
    
    module.exports = router
    ------------------> controllers user.js
    const User = require('../models/user') //подключение mongoose
    
    exports.userById = (req, res , next , id) =>{
        User.findById(id).exec((err, user)=>{
            if(err || !user){
                return res.status(400).json({
                    error: "User nor found"
                })
            }
            req.profile  = user//Вот так функция которую я деструктуризирую  
            next()
        })
    }//дальше ничего интересного
    exports.hasAuthorization = (req, res, next) =>{
        const  authorized = req.profile && req.auth && req.profile._id  === req.auth._id
        if(!authorized){
            return res.status(403).json({
                error: "User is not authorized to perfom this action"
            })
        }
    }
    exports.allUsers = (req, res)  =>{
        User.find(() =>{
            if(err){
                return res.status(400).json({
                    error: err
                })
            }
            res.json({ users })
        })
    }
  • Вопрос задан
  • 370 просмотров
Пригласить эксперта
Ответы на вопрос 2
@dGololobov
начинающий
router.get('/users', allUsers(req, res))
Ответ написан
IDONTSUDO
@IDONTSUDO Автор вопроса
ЧСВ программистов идет в комплекте с первой IDE.
IT`S WORK`S!!!
router.param('userId', function(req,res,id){
UserById(req, res, id)
})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы