Верните промежуточное ПО в класс - PullRequest
1 голос
/ 08 мая 2019

У меня есть класс с функцией промежуточного программного обеспечения, который я хочу вернуть.В промежуточном программном обеспечении я хочу использовать оператор 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 в возвращенном промежуточном программном обеспечении?

1 Ответ

1 голос
/ 08 мая 2019

validate является обратным вызовом и должен быть привязан к правильному this, например, с полем класса:

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