ユーザーサービスをバリデーターの制約インターフェイスに挿入しようとしていますが、うまくいかないようです。
import { ValidatorConstraintInterface, ValidatorConstraint, ValidationArguments, registerDecorator, ValidationOptions } from "class-validator";
import { UsersService } from './users.service';
@ValidatorConstraint({ async: true })
export class IsEmailAlreadyInUseConstraint implements ValidatorConstraintInterface {
constructor(private usersService: UsersService) {
console.log(this.usersService);
}
validate(email: any, args: ValidationArguments) {
return this.usersService.findUserByEmail(email).then(user => {
if (user) return false;
return true;
});
return false;
}
}
しかし、usersServiceがnullに記録されているため、そのメソッドにアクセスできません。
この問題についての洞察はありますか?
Nestアプリケーションを使用してすべての場所で依存性注入を許可するには、_class-validator
_のコンテナを更新する必要があります。 このGitHubの問題 はそれを行う方法を説明し、人々がそれに直面したいくつかの苦労をします。
リンクを読まないで簡単に修正:
_async function bootstrap() {
const app = await NestFactory.create(ApplicationModule);
useContainer(app, { fallback: true });
await app.listen(3000);
}
bootstrap();
_
これを行うときは、通常のネストと同じようにバリデーターも登録してください@Injectable()