Mongoose, MongoDB Nasıl Kullanılır?
Mongoose, MongoDB için bir nesne veri modelleme (ODM) kütüphanesidir. Bu kütüphane, MongoDB’de veritabanı işlemlerini daha kolay ve anlaşılır hale getirmek için kullanılır.
Mongoose, Node.js üzerinde çalışır ve MongoDB ile etkileşim kurmanızı sağlar. Mongoose, MongoDB’ye erişmek için standart MongoDB sürücüsü olan MongoDB Driver
‘ın üzerine inşa edilmiştir. Bu sayede, MongoDB’ye erişmek için kullanabileceğiniz tüm özelliklere sahipsiniz.
Mongoose, aynı zamanda şu avantajları sunar:
- Veritabanına yazma ve okuma işlemleri üzerinde otomatik doğrulama yapabilir
- Verilerinizi MongoDB içindeki belirli bir koleksiyonda tutabilirsiniz
- Koleksiyon içindeki herhangi bir belgenin alanlarını düzenleyebilirsiniz
- Mongoose, MongoDB’deki birden fazla koleksiyon arasındaki ilişkileri tanımlamanıza olanak tanır
- Veritabanı işlemlerini asenkron olarak gerçekleştirebilirsiniz
Şimdi Mongoose’un temel terimlerine bakalım:
- Schema: Mongoose’da bir şema, MongoDB koleksiyonundaki belgelerin yapısını tanımlar. Her şema, belge yapısını açıklamak için alan adlarını ve veri türlerini içerir.
- Model: Bir Mongoose modeli, bir MongoDB koleksiyonunun bir JavaScript sınıfıdır. Bu sınıf, veritabanından okuma ve yazma işlemleri gerçekleştirmenize olanak tanır.
- Document: Mongoose’da bir belge, bir MongoDB koleksiyonundaki bir kaydı temsil eder. Bir belge, bir şemaya göre yapılandırılmıştır ve bir Mongoose modeli üzerinden oluşturulur.
- Query: Bir Mongoose sorgusu, bir MongoDB koleksiyonundan belirli bir belgeyi veya belge kümesini döndürmek için kullanılır. Mongoose sorguları, kullanımı kolay ve okunması kolay bir API sağlar.
- Middleware: Mongoose middleware’leri, belirli bir modelin veya belgenin öncesi veya sonrasında çalışan işlevlerdir. Örneğin, bir belge kaydedildikten sonra çalışan bir middleware, belgeyi doğrulama veya ekstra işlemler yapmak için kullanılabilir.
- Validation: Mongoose validasyonu, belirli bir şemaya göre verilerin doğruluğunu kontrol eder. Doğrulama hataları, bir belge MongoDB’ye kaydedilmeden önce kontrol edilir.
- Population: Population, bir Mongoose modelinin belirli bir sütununun, başka bir modeldeki bilgiyle otomatik olarak değiştirilmesini sağlar. Bu, bir modeldeki referanslar ile diğer modeller arasındaki ilişkileri tanımlamak için kullanılır.
Bu temel terimleri anladığınıza göre, Mongoose’u kullanarak MongoDB’ye nasıl bağlanacağımızı ve veritabanı işlemleri gerçekleştireceğimizi öğrenebiliriz.
Tamam, şimdi Mongoose’u kullanarak bir MongoDB veritabanına bağlanmanın nasıl yapıldığına bakalım.
Mongoose kurulumunu yaptıktan sonra, ilk önce Mongoose’u projemize dahil etmemiz gerekiyor. Bunu, Node.js require()
fonksiyonu ile yapabiliriz:
const mongoose = require('mongoose');
Ardından, MongoDB veritabanına bağlanmak için mongoose.connect()
fonksiyonunu kullanırız. Bu fonksiyona ilişkin bazı parametreler vardır:
uri
: MongoDB veritabanının URI’si, örneğin:"mongodb://localhost/my_database"
options
: Bağlantı seçenekleri, örneğin:{ useNewUrlParser: true }
callback
: Bağlantı tamamlandığında çağrılacak işlev
Aşağıdaki örnekte, bir MongoDB veritabanına bağlanmak için Mongoose kullanımı gösterilmektedir:
const mongoose = require('mongoose');
// Veritabanı bağlantısı
mongoose.connect('mongodb://localhost/my_database',
{ useNewUrlParser: true },
function(err) {
if (err) {
console.log('Veritabanı bağlantısı başarısız oldu.');
} else {
console.log('Veritabanı bağlantısı başarılı.');
}
});
Bağlantı kurulduktan sonra, Mongoose modellerini ve şemalarını tanımlayabiliriz. Örneğin, bir Book
modeli için bir şema oluşturabiliriz:
const mongoose = require('mongoose');
// Book şeması tanımlama
const bookSchema = new mongoose.Schema({
title: String,
author: String,
pages: Number,
publishedDate: Date,
});
// Book modeli oluşturma
const Book = mongoose.model('Book', bookSchema);
Bu kod, Book
adında bir model oluşturur ve bu modelin her belgesinin aşağıdaki özellikleri içereceğini belirtir:
title
: Kitabın başlığıauthor
: Kitabın yazarıpages
: Kitabın sayfa sayısıpublishedDate
: Kitabın yayınlanma tarihi
Şimdi, bu modeli kullanarak MongoDB veritabanına belge ekleyebiliriz:
const mongoose = require('mongoose');
// Veritabanı bağlantısı
mongoose.connect('mongodb://localhost/my_database',
{ useNewUrlParser: true },
function(err) {
if (err) {
console.log('Veritabanı bağlantısı başarısız oldu.');
} else {
console.log('Veritabanı bağlantısı başarılı.');
// Book modelini kullanarak yeni bir belge oluşturma
const newBook = new Book({
title: 'Harry Potter and the Philosopher\'s Stone',
author: 'J.K. Rowling',
pages: 223,
publishedDate: new Date('26 June 1997'),
});
// Belgeyi veritabanına kaydetme
newBook.save(function(err) {
if (err) {
console.log('Belge kaydedilemedi.');
} else {
console.log('Belge başarıyla kaydedildi.');
}
});
}
});
Bu örnekte, newBook
adında bir yeni bir belge oluşturduk ve save()
fonksiyonu aracılığıyla MongoDB veritabanına kaydettik. Bu belge, Book
modelinde tanımlanan özelliklere sahip olacak şekilde yapılandırılmıştır.