16 Eylül 2013 Pazartesi

NodeJS & MongoDB - Controller İçinde Model Kullanımı


Hepinize selamlar... Önceki dersimizde projemiz için gerekli olan modelleri hazırlamıştık. Şimdi hazırladığımız modellerin projenin controller kısmında nasıl kullanacağımızı sizlere anlatmaya çalışacağım.


Önceki derslerimizden hatırlamaya çalışın, controller = "Uygulamanın davranış biçimi". Burası çok önemli. Uygulamanızın doğru davranabilmesi controller a bağlı, ve controller ise bizim modelleri kullanıyor. Yani modellerinizin de optimal ve güzel tasarlanmış olması gerekiyor. Neyse bu kadar felsefeden sonra icraate geçmenin zamanı geldi. Controller içinde model kullanımına en iyi örnek "Kullanıcı Kaydı/Girişi" olabilir. UserController içinde User modelimizi kullanabiliriz. Düşünün ki, kullanıcı giriş sayfasında kullanıcı adı ve şifresini yazdı ve giriş yap düğmesine bastı. Sonra bu bilgileri /user/login url şemasına ait olan UserController.js içine yolladık. Bunun gibi bir senaryoyu aşağıdaki gibi implemente edebiliriz.


Kod yükleniyor...

Kod örneğindeki yorumları incelediyseniz olayı çok rahat bir şekilde anlarsınız. Controller içinde ilk önce gerekli modüller çağrılıyor. User modelimiz de buraya import ediliyor. Sonra kullanıcı giriş url si olan /user/login/ şemasına post metoduyla istek gönderilince, form değerleri alınıp User modeli üzerinden bu bilgilerle db ye sorgu atılıyor. Eğer email/şifre doğruysa session set edilip kullanıcı ana sayfaya yönlendiriliyor.

İkinci kısımda da /user/register/ urlsine post isteği yollanırsa, kullanıcı formundaki kullanıcı bilgileri alınıp yeni User modeli tanımlanıp, form bilgileri User modeline set ediliyor. Son olarak da User modeli üzerinden save() metodu çağrılıyor. Metod çağrıldıktan sonra hata olup olmadığı kontrol edilip kullanıcı session değerleri set edilip anasayfaya yönlendiriliyor. Modellerin controller içinde  kullanımı sizinde anladığınız üzere çok basit. Eğer kafanıza takılan soru olursa hiç çekinmeden bu yazının yorum kısmında sorabilirsiniz. Umarım faydalı bir yazı olmuştur. 

Bir sonraki yazıda görüşmek üzere...

Hiç yorum yok:

Yorum Gönder