Ana içeriğe geç

Node.js Sequelize Kurulumu ve MySQL Kullanımı

Bu Rehberde Ne Öğreneceksiniz?

Nginx kurulumu ve yapılandırması ne kadar kritikse, veritabanı yönetimi de modern uygulamaların kalbidir.
Bu rehberde Node.js projelerinde Sequelize ORM kullanarak MySQL veritabanını güvenli, sürdürülebilir ve profesyonel şekilde yönetmeyi öğreneceksiniz.

Kurulumdan karmaşık tablo ilişkilerine, migration yönetiminden performans optimizasyonuna kadar tüm süreci uygulamalı ele alıyoruz.


Teknik Analiz (Aşama 1)

Ana Teknik Konu:
Node.js ekosisteminde popüler bir ORM olan Sequelize’ın MySQL ile kullanımı.

Çözülen Problem:
Ham SQL yazmadan, JavaScript nesneleri ile CRUD işlemleri, tablo ilişkileri ve şema yönetimi yapmak.

İzlenen Adımlar:

  • Proje ortamının hazırlanması
  • Sequelize, MySQL2 ve Dotenv kurulumu
  • Güvenli veritabanı bağlantısı
  • Model tanımlama ve CRUD işlemleri
  • İlişkiler (1-1, 1-N, N-N)
  • Raw SQL ve Migration yönetimi

Sequelize Nedir?

Sequelize, Node.js tabanlı bir Nesne-İlişkisel Eşleme (ORM) kütüphanesidir.
MySQL, PostgreSQL, MariaDB, SQLite ve MSSQL destekler.

Avantajları:

  • SQL Injection riskini azaltır
  • Okunabilir ve bakımı kolay kod üretir
  • İlişkileri basit şekilde tanımlar
  • Migration ile şema değişimini güvenli yapar

1️⃣ Kurulum ve Yapılandırma

1.1 Proje Dizini Oluşturma

mkdir rabisu-proje && cd rabisu-proje
npm init -y
npm install sequelize mysql2 dotenv
  • Bu komutlar Node.js projesini oluşturur ve gerekli paketleri kurar.

1.2 Ortam Değişkenleri (.env)


DB_NAME=rabisu_db
DB_USER=root
DB_PASS=sifreniz123
DB_HOST=localhost
DB_DIALECT=mysql
  • Bu dosya hassas bilgileri koddan ayırır.

2️⃣ MySQL Bağlantısını Kurma


require('dotenv').config();
const { Sequelize } = require('sequelize');

const sequelize = new Sequelize(
process.env.DB_NAME,
process.env.DB_USER,
process.env.DB_PASS,
{
host: process.env.DB_HOST,
dialect: process.env.DB_DIALECT
}
);

sequelize.authenticate()
.then(() => console.log('Bağlantı başarılı!'))
.catch(err => console.error('Bağlantı hatası:', err));
  • Bu kod Sequelize ile MySQL bağlantısını test eder.

3️⃣ Model Tanımlama ve Veri Ekleme


const { DataTypes } = require('sequelize');

const Kitap = sequelize.define("kitaplar", {
baslik: { type: DataTypes.STRING, allowNull: false },
yazar: { type: DataTypes.STRING, allowNull: false }
});
  • Bu model, veritabanındaki kitaplar tablosunu temsil eder.

3.1 Tablo Oluşturma ve Kayıt Ekleme


sequelize.sync().then(() => {
return Kitap.create({
baslik: "Temiz Kod",
yazar: "Robert C. Martin"
});
}).then(kitap => {
console.log("Kitap eklendi:", kitap.baslik);
});
  • Bu kod tabloyu oluşturur ve örnek veri ekler. (Geliştirme ortamı için uygundur.)

4️⃣ Sequelize İlişkileri (Associations)


// Bire-Bir
Ogrenci.belongsTo(Sinif);

// Bire-Çok
Yazar.hasMany(Kitap);

// Çoka-Çok
Ogrenci.belongsToMany(Kurs, { through: 'OgrenciKurslar' });
  • Bu ilişkiler karmaşık sorguları basit hale getirir.

5️⃣ Ham (Raw) SQL Sorgular


sequelize.query(
'SELECT * FROM kitaplar WHERE yazar = :yazarAdi',
{
replacements: { yazarAdi: 'Robert C. Martin' },
type: sequelize.QueryTypes.SELECT
}
).then(sonuclar => console.log(sonuclar));
  • Bu yöntem ORM dışı, ama güvenli SQL çalıştırır.

6️⃣ Soft Delete (Yumuşak Silme)


const Kitap = sequelize.define("kitaplar", {
baslik: DataTypes.STRING
}, {
paranoid: true
});
  • paranoid: true, veriyi silmez; deletedAt alanı doldurur.

7️⃣ Migration ve Production Kullanımı

1. sequelize.sync() → Sadece geliştirme ortamı

2. Production için Sequelize CLI + Migration kullanın

3. Her şema değişimi versiyonlanmalıdır

7.1 Performans İpuçları

1. attributes ile gereksiz kolonları çekmeyin

2. Sık kullanılan alanlara Index ekleyin

3. Büyük listeleri paginate edin

4. Gerekirse raw query kullanın


Sıkça Sorulan Sorular (SSS)

sequelize.sync() production’da kullanılır mı? Hayır. Migration tercih edilmelidir.

.env neden önemli? Şifrelerin GitHub’a sızmasını önler.

Sequelize hangi DB’leri destekler? MySQL, PostgreSQL, SQLite, MariaDB, MSSQL.

Raw query güvenli mi? Evet, replacements kullanılırsa.

Sonuç

Bu rehberle Sequelize’i Node.js projelerinde doğru mimariyle, güvenli ve ölçeklenebilir şekilde kullanmayı öğrendiniz. Artık CRUD, ilişkiler, migration ve performans konularında sağlam bir temeliniz var.

🚀 Projelerinizi Rabisu Bulut altyapısında yüksek performanslı sunucularla yayına alabilirsiniz.