Giriş

Mongoose modelleri, MongoDB veritabanlarında verileri yönetmek için kullanılır. Bu makalede, Mongoose modellerinin nasıl oluşturulacağı, kullanıldığı ve veritabanı şemalarının nasıl tanımlandığı üzerine detaylı bir rehber sunacağız.

Mongoose Modelleri ve Şemalarının Önemi

Mongoose, MongoDB için bir ODM (Object Document Mapping) kütüphanesidir. Mongoose modelleri, MongoDB dokümanları için bir şema tanımı sağlar ve bu şemalar, veritabanı ile etkileşimde bulunmak için kullanılır.

Modellerin Tanımlanması

Mongoose modeli, bir MongoDB koleksiyonunu ve koleksiyondaki dokümanların şeklini tanımlar. Bir model, Mongoose’un model metodunu kullanarak oluşturulur ve şema üzerinde tanımlanır.

Şemaların Oluşturulması

Şema, bir dokümanın veri yapısını ve veritabanı içinde nasıl saklanacağını tanımlar. Şema, veri türleri, varsayılan değerler ve validasyon kuralları içerebilir.

Şema Tanımlama

Veri Türleri

Mongoose şemalarında çeşitli veri türleri kullanılabilir. Bunlar arasında String, Number, Date, Buffer, Boolean, ObjectId, Array, ve Mixed bulunur.

Varsayılan Değerler ve Validasyon

Şemalarda, alanlara varsayılan değerler atanabilir ve veri geçerliliği için validasyon kuralları belirlenebilir.

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
  name: { type: String, required: true },
  age: { type: Number, default: 30 },
  email: { type: String, required: true, lowercase: true }
});

Özel Metodlar ve Statikler

Şemalara özel metodlar ve statik fonksiyonlar ekleyerek, model üzerinde karmaşık işlemleri kolaylaştırabilirsiniz.

userSchema.methods.fullName = function() {
  return this.firstName + ' ' + this.lastName;
};

userSchema.statics.findByName = function(name) {
  return this.find({ name: new RegExp(name, 'i') });
};

Model Kullanımı

Veri Oluşturma ve Kaydetme

Modeliniz üzerinde bir örnek oluşturduktan sonra, save metodunu kullanarak veriyi veritabanına kaydedebilirsiniz.

const User = mongoose.model('User', userSchema);
const user = new User({name: 'Ali', age: 25, email: 'ali@example.com'});
user.save();

Sorgulama İşlemleri

Mongoose modelleri, veritabanında veri sorgulamak için çeşitli metodlar sunar.

// Tüm kullanıcıları bul
User.find({}, function(err, users) {
  if (err) throw err;
  console.log(users);
});

// İsme göre kullanıcı bul
User.findOne({ name: 'Ali' }, function(err, user) {
  if (err) throw err;
  console.log(user);
});

Sonuç

Mongoose modelleri ve şemaları, MongoDB veritabanları ile çalışırken büyük esneklik ve güç sunar. Bu makalede, Mongoose modellerinin nasıl oluşturulacağı, kullanılacağı ve veritabanı şemalarının nasıl tanımlandığı üzerine ayrıntılı bir rehber sunduk. Bu bilgilerle, kendi Node.js uygulamalarınızda Mongoose modellerini etkili bir şekilde kullanabilir ve veritabanı işlemlerinizi optimize edebilirsiniz.