Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan teknik bir eğitim içeriğidir. Eğitmen, MongoDB Node.js driver'ı kullanarak veritabanı işlemleri yapmayı adım adım göstermektedir.
- Video, MongoDB ile Node.js arasında bağlantı kurma, veritabanı işlemleri (find, insert, delete, update) ve asenkron işlemlerin promise pattern'leri kullanılarak nasıl yönetileceğini kapsamaktadır. İçerik, yeni bir Node.js projesi başlatma, MongoDB driver'ı yükleme, "mongo.js" kütüphanesi oluşturma, bağlantı açma/kapatma ve veri ekleme fonksiyonları gibi konuları kapsamaktadır.
- Eğitim boyunca promiselerin doğru kullanımı, finally bloğunun işlevi, asenkron işlemlerin sıralı çalıştırılması ve farklı obje tiplerinin MongoDB'e nasıl eklenebileceği gibi teknik detaylar örneklerle açıklanmaktadır. Ayrıca, MongoDB'nin farklı sürümlerindeki değişikliklere dikkat edilmesi gerektiği ve hata ayıklama süreci de gösterilmektedir.
- 00:06MongoDB Node.js Driver Temel Bilgiler
- MongoDB Node.js driver'ı ile veritabanına bağlantı kurulduktan sonra db objesi kullanılarak collection'lara erişim sağlanır.
- db objesi, dbname parametresi ile veritabanına ve altındaki collection'lara erişim imkanı sağlar.
- Tüm operasyonlar asenkron çalışır, yani promise veya callback döner.
- 01:50Collection İşlemleri
- Collection listesi alınırken sadece tanımsal bilgiler alınır ve bu işlem senkron çalışır.
- Diğer tüm veritabanı işlemleri (connection, close, open dahil) asenkron çalışır.
- Select işlemi için collection üzerinde find metodu kullanılır ve query string olarak object şeklinde parametre alır.
- 03:14Cursor Objesi ve Özellikleri
- Find komutu cursor objesi döndürür, bu obje doğrudan veri değil bir araçtır.
- Cursor objesi iteratör mantığıyla kullanılabilir, next, prev gibi metotlarla veya foreach ile dolaşılabilir.
- Cursor objesi üzerinde toArray gibi metodlarla veriler farklı formatlara dönüştürülebilir.
- 06:14Insert İşlemleri
- Insert işlemi insertOne ve insertMany olarak iki şekilde yapılır.
- InsertOne tek bir belge eklerken, insertMany birden fazla belge ekler.
- Insert işlemlerinin return değeri WriteOpResult tipindedir ve insertCount, insertedId gibi özellikler içerir.
- 09:35Delete ve Update İşlemleri
- Delete işlemi deleteOne ve deleteMany olarak iki şekilde yapılır.
- Update işlemi updateOne ve updateMany olarak iki şekilde yapılır.
- Update işleminde birinci parametre filtre, ikinci parametre ise güncellenecek alanları belirten objedir.
- 11:44Örnek Uygulama
- Örnek uygulamada veritabanı işlemleri fonksiyonlara çevrilerek basit bir dış kabuk oluşturulacak.
- User tanımının altına sessions özelliği eklenecek ve bir kullanıcı için birden fazla oturum özelliği sağlanacak.
- 12:26MongoDB Bağlantı Kütüphanesi Oluşturma
- Yeni bir klasör başlatılıyor ve npm ile MongoDB driver yükleniyor.
- "mongo.js" dosyası oluşturulup, bağlantı kodları kopyalanıp yapıştırılıyor.
- MongoDB bağlantısı için "openDb" adında bir fonksiyon yazılacak ve tüm işlemler promise dönen fonksiyonlar olarak tasarlanacak.
- 13:26Fonksiyon ve Promise Kullanımı
- "openDb" fonksiyonu, MongoDB client'ın bağlı olup olmadığını kontrol ediyor ve bağlıysa hata döndürüyor.
- MongoDB client'ın connect fonksiyonu promise döndürdüğü için, connect işlemi promise ile yönetiliyor.
- Fonksiyon, bağlantı başarılıysa resolve, başarısızsa reject ile promise durumunu değiştiriyor.
- 16:42Modül Dışarı Aktarımı ve Gizleme
- Kütüphane geliştiricilerin MongoDB detaylarıyla uğraşmasını engellemek için sadece "openDb" fonksiyonu dışarı aktarılıyor.
- Diğer değişkenler ve fonksiyonlar gizleniyor, böylece geliştiriciler sadece "openDb" fonksiyonunu kullanabilir.
- Eksik kodlar düzeltiliyor ve MongoDB sürümleri arasındaki farklara dikkat ediliyor.
- 20:26Bağlantı Testi ve Hata Ayıklama
- Kod çalıştırılarak bağlantı testi yapılıyor, ancak hata oluştuğu için debug modu kullanılıyor.
- Hatalar tespit ediliyor: "isConnected" fonksiyonunun çağrılması ve connect metodunun parametrelerinin doğru kullanımı.
- Sorunlar düzeltiliyor ve bağlantı başarıyla kuruluyor.
- 26:46MongoDB Bağlantı Fonksiyonları
- MongoDB bağlantısı için "connect" fonksiyonu kullanılır ve içi boşsa promise döner, parametre verilirse kolbeyi döner.
- Bağlantı bilgileri yukarıda tanımlanmıştır ve fonksiyonlar bu bilgilere göre çalışır.
- "closeDb" fonksiyonu da benzer şekilde yazılmış olup, bağlantılıyse "close" çağrısı yapar.
- 29:31Bağlantı ve Kapatma İşlemleri
- Bağlantı ve kapatma işlemlerinde promise pattern kullanılarak resolve ve reject işlemleri gerçekleştirilir.
- Bağlantı açılıp hemen kapatma işlemi yapılarak "bağlandı" ve "bağlantı kapatıldı" mesajları ekrana yazdırılır.
- MongoDB'nin canlı bağlantısı basit işlemler için yeterlidir, daha karmaşık işlemler için farklı bir yaklaşım gerekebilir.
- 32:18Veritabanı Erişim Fonksiyonları
- Veritabanı işlemlerinde iç içe promise kullanılarak işlemler sıralı ve birbirini bekleyerek çalıştırılır.
- Uygulama çalıştığı sürece bağlantı açık kalır ve sadece disconnect eventi gerçekleşirse yeniden bağlantı kurulabilir.
- "insertDb" fonksiyonu oluşturulup, tablo ve model parametreleri alarak veritabanına insert işlemi yapılır.
- 36:39Insert İşlemi ve Sonuç
- Karmaşık görünen kodun basit bir fonksiyon seviyesine indirgenmesi amaçlanmaktadır.
- Veritabanına erişim orta bir noktadan kontrollü olarak geçirilerek kısıtlamalar uygulanabilir.
- Insert işlemi yapıldıktan sonra sonuç ekrana yazdırılır ve MongoDB'de yeni bir kayıt oluşur.
- 41:48Promise Kullanımı ve Zincirleme İşlemi
- Insert promisi eklenerek iki tane insert işlemi gerçekleştiriliyor ve ardından reaction çağrılıyor.
- Promislerin çarşıyı karıştırdığı nokta, bir promisin return edilmesiyle başlıyor.
- Return olmasaydı, insertion işlemi sürerken close işlemine geçilme olasılığı olurdu.
- 43:30Promise Fonksiyonu Tasarımı
- Insert fonksiyonu, tablo ve model parametrelerini alan bir promise fonksiyonu olarak tasarlanıyor.
- Promise içinde database insert işlemi yapılıyor ve sonuç promise'ye dönüyor.
- Bağlantı sağlanmıyorsa reject gönderiliyor, bağlıysa insertion işlemine başlanıyor.
- 44:52Asenkron Çalışma ve Paralel İşlemler
- Promisler asenkron çalışır ve birbirlerini bekletebilir veya paralel çalıştırılabilir.
- Database açıldıktan sonra insert fonksiyonu çalıştırılıyor.
- Insert işlemi sonrası database kapatılıyor.
- 45:12Kompleks Objeleri Insert Etme
- Users tablosuna obje verilerek insert işlemi gerçekleştiriliyor.
- Kompleks objeler de serileştirilebilir ve database'e eklenebilir.
- Proses objesinin argv özelliği de database'e başarıyla eklenebiliyor.
- 49:37Finally Kullanımı ve Return Önemi
- Finally bloğu, promise tamamlandı (catch veya resolve) olduğunda çalışır.
- Return anahtarı, promisin tamamlanmasını beklemesini sağlar.
- Close işlemi, finally bloğunda yer alarak her durumda çalışacak şekilde tasarlanıyor.