Как мне ввести объект TypeORM с помощью Inversify?

У меня есть User субъект, имеющий generateTokenметод. Этот метод имеет зависимость, называемуюcipher, который я хотел бы ввести с помощью Inverisfy. Это возможно? Если нет, то какая альтернатива?

Исследование

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

Что я пробовал

Я могу собрать что-то вместе, добавив public cipher: ICipher собственность UserEntity а затем внедрить класс-оболочку, UserRepository, вот так:

@injectable()
export class UserRepository {
  private repository: Repository<UserEntity>;

  constructor(@inject(TYPES.Cipher) private cipher: ICipher) {
    this.repository = getRepository(UserEntity);
  }

  create(data: UserEntity): UserEntity {
    const user = this.repository.create(data);
    user.cipher = this.cipher;
    return user;
  }
}

Но упаковка каждого Repository метод вряд ли является хорошим решением.

0 ответов

Другие вопросы по тегам