首页 > 解决方案 > 返回类中的中间件

问题描述

我有一个带有中间件功能的类,我想返回它。在中间件中我想使用this语句,但现在它只是未定义的。班级 :

export class Validator {
    constructor(options: validatorOptions) {
        this.schema = options.schema
        this.validateRequest = options.validateRequest
        this.validateResponse = options.validateResponse
    }

    private validate(req, res, next) {
        console.log(this.schema) //undefined
    }

    public getValidator() {
        return this.validate
    }
}

类声明:

import {Validator} from './validator/validator'

export const validator = () => {
    const config = {
    schema,
    validateRequest: true,
    validateResponse: true
  }

  let v = new Validator(config)

  return v.getValidator()
}

中间件使用:

import { validator } from './middleware'
app.use(validator())

我如何this在返回的中间件中使用?

标签: node.jstypescriptexpressoopmiddleware

解决方案


validate是一个回调并且应该被绑定到正确this的,例如使用类字段:

private validate = (req, res, next) => { ... }

推荐阅读