TypeORM Validation ve Custom Validator Kullanımı


TypeORM Validation ve Custom Validator Kullanımı

TypeORM Validation Nedir ve Neden Önemlidir?

TypeORM, özellikle Node.js ve TypeScript ile geliştirilen projelerde yaygın şekilde kullanılan güçlü bir ORM (Object-Relational Mapping) kütüphanesidir. Veritabanı işlemlerini kolaylaştırmasının yanında, entity tabanlı yapısı ile veri doğrulama işlemlerinde büyük kolaylık sunar. TypeORM validation, veritabanına kaydedilecek verilerin doğruluğunu, tutarlılığını ve güvenliğini sağlamak için oldukça önemlidir. Bu sayede hem istemci tarafında hem de sunucu tarafında güvenilir, hatasız veri saklayabiliriz.

TypeORM ile Doğrulama Nasıl Yapılır?

TypeORM validation işlemleri için genellikle class-validator kütüphanesi ile birlikte kullanılır. Bu kütüphane, entity sınıflarınız üzerinde çeşitli decorator'lar yardımıyla alan bazlı doğrulama yapmanızı sağlar. Örnek olarak bir kullanıcı entity'sinde e-posta ve şifre doğrulaması yapılabilir. Aşağıda TypeORM ve class-validator ile temel bir doğrulama örneği görebilirsiniz:

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
import { IsEmail, Length } from "class-validator";

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id!: number;

  @Column()
  @IsEmail()
  email!: string;

  @Column()
  @Length(8, 20)
  password!: string;
}

Bu yapıda, @IsEmail() ile email alanının doğru formatta olması, @Length(8, 20) ile şifrenin en az 8 en fazla 20 karakter uzunluğunda olması sağlanır. TypeORM validation ile yapılan bu kontroller, hata yönetimi ve kullanıcı deneyimi açısından büyük avantaj sunar.

Custom Validator ile Kendi Kurallarınızı Oluşturun

TypeORM validation ile birlikte custom validator tanımlayarak kendi özel doğrulama kurallarınızı geliştirebilirsiniz. Özellikle karmaşık iş kurallarında veya farklı alan ilişkilerinde, hazır doğrulama fonksiyonları yeterli olmayabilir. Bunun için class-validator kütüphanesi ValidatorConstraint ve Validate decorator desteği sunar. İşte örnek bir custom validator kullanımı:

import { ValidatorConstraint, ValidatorConstraintInterface, ValidationArguments, Validate } from "class-validator";

@ValidatorConstraint({ async: false })
class IsUsernameValidConstraint implements ValidatorConstraintInterface {
  validate(username: string, args: ValidationArguments) {
    // Sadece harf ve rakamdan oluşmalı, 4-15 karakter arası
    return /^[a-zA-Z0-9]{4,15}$/.test(username);
  }
  defaultMessage(args: ValidationArguments) {
    return "Kullanıcı adı sadece harf ve rakamdan oluşmalı ve 4-15 karakter olmalıdır.";
  }
}

@Entity()
export class Member {
  @PrimaryGeneratedColumn()
  id!: number;

  @Column()
  @Validate(IsUsernameValidConstraint)
  username!: string;
}

Bu örnekte IsUsernameValidConstraint adında bir custom validator oluşturduk ve username alanına custom kural ekledik. Bu sayede, TypeORM validation sadece standart kuralları değil, tamamen projeye özel gereksinimleri de kolayca karşılar.

Sonuç: TypeORM Validation ve Custom Validator İşlevselliği

TypeORM validation ve custom validator çözümleri, modern Node.js ve TypeScript uygulamalarında veri bütünlüğü sağlamak için vazgeçilmezdir. Standart ve özelleştirilebilir doğrulamalar sayesinde hem kodun okunabilirliği hem de güvenliği üst seviyede tutulur. Özellikle büyük projelerde, reusable custom validator'lar geliştirerek uygulama geneline kolayca entegre edebilirsiniz. TypeORM validation ile verilerinizin kontrolünü elinizde tutun ve projelerinizde fark yaratın!