передать параметр в промежуточном программном обеспечении expressjs / nodejs

#node.js #express

#node.js #выразить

Вопрос:

Я работаю в проекте NodeJS, где я хотел передать параметр в промежуточном программном обеспечении, чтобы я мог проверять в коде.

Например, созданное мной промежуточное программное обеспечение выглядит следующим образом

 'use strict';
// eslint-disable-next-line no-unused-vars
import BadRequest from '../../../errors/BadRequest';
// eslint-disable-next-line no-unused-vars
import ResponseFormatter from '../../../util/ResponseFormatter';

export default function middlewareWithParam (options) {
    return function (req, res, next) {
        // Implement the middleware function based on the options object
        
        return next();
        //ResponseFormatter.error(new BadRequest('03'), req, res);
    };
}
 

Теперь я хочу использовать это промежуточное программное обеспечение в классе контроллера, чтобы, передавая разные значения для каждой промежуточной точки, можно было проверить запрос.

Например.

 Controller class

import { middlewareWithParam } from '../middlewares/validators/Role/middlewareWithParam';

export default class RoleController extends BaseController {
    paths = [
        {
            'method': 'GET', 'path': '/', 'middlewares': [middlewareWithParam({option1 : '1',option2 : '2'})], 'handler': this.getRoleList
        },
        {
            'method': 'GET', 'path': '/getRoleByID', 'middlewares': [middlewareWithParam({option1 : '3',option2 : '4'})], 'handler': this.getRoleByID
        }
}
 

но я получаю сообщение об ошибке, которое

 'middlewares': [(0, _middlewareWithParam.middlewareWithParam)()],
                                                                   ^

TypeError: (0 , _middlewareWithParam.middlewareWithParam) is not a function
 

Ответ №1:

Нет необходимости в деструктурировании. удалите фигурные скобки. изменить

 import { middlewareWithParam } from '../middlewares/validators/Role/middlewareWithParam';
 

Для

 import  middlewareWithParam from '../middlewares/validators
 

Взгляните на https://exploringjs.com/es6/ch_destructuring.html

Редактировать:

Или сделайте что-то подобное, чтобы определить его.

 function middlewareWithParam(options) {
    return function(req, res, next) {
            // return next();
    };
}

module.exports = {
    middlewareWithParam
}
 

Или удалите значение по умолчанию.

 export function middlewareWithParam(options) {
    return function(req, res, next) {
            // return next();
    };
}