Node JS ile veritabanı işlemleri — MongoDB #9–1

Çağatay Çalı
Çağatay Çalı
Published in
2 min readNov 6, 2017
Node.js Türkçe Eğitim Serisi — MongoDB

Merhabalar, bu yazımızda sizinle beraber veritabanı işlemlerini öğreniyor olacağız, olabildiğince Türkçe ve özgün içerik üretiyorum, sorularınızı özel olarak ilettiğinizde yanıtlamaya çalışıyorum, eğer faydalanıyorsanız blog’umu sosyal medya hesaplarınızdan paylaşarak destek olabilirsiniz.

MongoDB yani belge odaklı bir veritabanı kullanacağımız zaman mongoose adlı kütüphaneyi kullanıyor olacağız,

Mongoose’u kuralım,

yarn add mongoose

Bilgisayarınızda MongoDB mevcutsa bağlantıyı direkt lokal olarak sağlayabilirsiniz. Fakat kurulumunuz mevcut değilse mlab.com’dan bir adet deneme veritabanı edinip örneği gerçekleyebilirsiniz.

Kodumuzda mongoose’u çağıralım.

const mongoose = require(‘mongoose’)

Örnekleyeceğimiz senaryo basit kullanıcı bilgilerini tutmak olsun, bunun için `mongoose.Schema` metodu ile dökümanımıza kaydedeceğimiz satırların tiplerini ve özelliklerini belirtebiliyoruz.

Yukarıda hazırladığımız şemayı bir dökümana bağlayalım.

Veritabanımıza bağlanmak için `mongoose.connect` metodunu kullanacağız.

MongoDB veri ekleme işlemi ( MongoDB insert document )

MongoDB veri arama işlemi ( MongoDB find document )

Sizlerle balığı tutmayı öğreneceğimiz için find metodunda bu işi daha farklı nasıl çözebileceğimizi biraz detaylandırıyor olacağız.

Aşağıdaki gibi bir kullanım JavaScript’in standart callback yakalama yöntemini örnekler.
Birinci findOne metodu bir dökümanı seçmek için kullandığımız bir metoddur ve ikinci parametre olarak bir callback döner.
Bu callback’in birinci değeri hata yani error, ikinci değeri ise varsa döküman yoksa undefined olarak dönecektir.

Aşağıdaki örnekte ise ES6 özelliklerinden async await bloklarını kullanarak nasıl bu arama işlemini yapabileceğimizi görüyorsunuz.

Hazırladığımız find metodu promise dönecektir. Try catch blokları ile yakalanmazsa ve hata meydana gelirse kodunuz ileri versiyonlarda crash olacaktır yani çalışmayı durduracaktır.

findOne metodu eğer dökümanı bulamazsa hata vermeyecektir. Bunun yerine dökümanı undefined döndürecektir. Bunu kodunuzda kontrol ettirmelisiniz.

MongoDB güncelleme işlemi ( MongoDB update document )

Diğer veritabanlarında olduğu gibi MongoDB’de upsert yani find and update işlemine müsade etmektedir, bu kısımda ikisini de göreceğiz.

Yukarıdaki örnekte önce id değerine göre bir arama gerçekleştirdik sonrasında değişikliklerimizi yapıp kaydettik.
MongoDB’nin upsert metodunu sağladığını yazının başına dile getirmiştik. Şimdi onu örnekleyelim. Ayrıca sürekli olarak yazım stilini değiştirerek diğer stilleri görmenizi sağlamış olalım.

MongoDB silme işlemi ( MongoDB remove document )

Aşağıdaki örnekte yukarıda kullandığımız check metodunun olduğunu varsayıyoruz.

Yukarıda örneklemeye çalıştığımız temel metodları fonksiyonlar haline getirdik ve döküman boş mu dolu mu kontrolü yaptık.
Kodumuzun son hali şu şekilde oldu,

Bir MongoDB bağlantı adresi edinerek yukarıdaki kodları çalıştırıp, yorum satırlarıyla oynayarak sistemi kavrayabilirsiniz. Kodları örnek olması amacıyla hazırladım, test ettim. MongoDB’deki $set, $lte, $gte gibi operatörleri ana dökümandan okuyarak denemenizi şiddetle tavsiye ediyorum. Örneğin veritabanını dökümanlarınızda tarih değerleri mevcut olsun. Siz sadece geçtiğimiz ay kaydedilenleri sorgulamak isterseniz şuna benzer bir kod yazmalısınız.

MongoDB operatörlerini bu yüzden öğrenmenizi şiddetle tavsiye ediyorum. Bir sonraki yazıda sizlerle ilişkisel veritabanında biraz oynayacağız. Ekleme silme güncelleme listeleme (CRUD) ve ilişkisel olarak birbirine bağlamayı görüyor olacağız. Eğer yazılarımdan fayda sağladıysanız, daha fazla insana ulaşmasını sağlayarak destek olabilirsiniz.

Çağatay.

--

--

Çağatay Çalı
Çağatay Çalı

Hack the ( things || ideas ) with code, equipped with NodeJS and coding skills which gained in early age.