MongoDB bağlantısı NoSQL veri tabanı olan MongoDB’yi kullanmak için yaparız. NoSQL “Not Only SQL” yani “Sadece SQL Değil” Anlamına geliyor.
MongoDB verilerimizi JSON formatında depolar. Oldukça kolay mantığı ve yapısı olduğu için çoğu kişi tarafından tercih ediliyor. NodeJS ve Express ile beraber son derece uyumlu çalışıyor. Bu yüzden genellikle NodeJS projelerinde MongoDB çokça kullanılıyor.
Bu yazımda sizlere NodeJS MongoDB bağlantısını göstereceğim. Ancak öncelikle NodeJS server oluşturma yazımıza göz atın.
Bağlantıyı oluştururken “mongoose” paketini kullanacağız. Bu paket NodeJS MongoDB bağlantısı yapmayı kolaylaştırmak için özel olarak yazılan bir paket. Mongoose paketini kurmak için aşağıdaki kodları yazıyoruz.
<pre style="background: rgb(238, 238, 238); border: 1px dashed rgb(153, 153, 153); line-height: 14px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; width: 592.016px;"><code style="background-attachment: initial; background-clip: initial; background-color: #f1f1f1; background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat; background-size: initial; background: url("images/code.gif") left top no-repeat rgb(241, 241, 241); border-color: rgb(221, 221, 221); border-image: initial; border-style: dotted dotted dotted solid; border-width: 1px 1px 1px 10px; display: block; margin: 0px; outline: 0px; padding: 20px; vertical-align: baseline;">npm install mongoose<br />
Böylelikle projemiz içerisinde yer alan “node_modules” klasörüne paketimiz kurulmuş olacaktır.
Daha sonra paketi projemize dahil etmeliyiz.
<pre style="background: rgb(238, 238, 238); border: 1px dashed rgb(153, 153, 153); line-height: 14px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; width: 592.016px;"><code style="background-attachment: initial; background-clip: initial; background-color: #f1f1f1; background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat; background-size: initial; background: url("images/code.gif") left top no-repeat rgb(241, 241, 241); border-color: rgb(221, 221, 221); border-image: initial; border-style: dotted dotted dotted solid; border-width: 1px 1px 1px 10px; display: block; margin: 0px; outline: 0px; padding: 20px; vertical-align: baseline;">const mongoose = require('mongoose');<br />
Böylelikle paket artık projemiz içerisinde yer alıyor. Artık tek yapmamız gereken bağlantıyı kurmak.
<pre style="background: rgb(238, 238, 238); border: 1px dashed rgb(153, 153, 153); line-height: 14px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; width: 592.016px;"><code style="background-attachment: initial; background-clip: initial; background-color: #f1f1f1; background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat; background-size: initial; background: url("images/code.gif") left top no-repeat rgb(241, 241, 241); border-color: rgb(221, 221, 221); border-image: initial; border-style: dotted dotted dotted solid; border-width: 1px 1px 1px 10px; display: block; margin: 0px; outline: 0px; padding: 20px; vertical-align: baseline;">mongoose.connect('mongodb://localhost/my_database', {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
useCreateIndex: true
});
Bu kodlar sayesinde bilgisayarımıza kurduğumuz MongoDB veri tabanına bağlanmış olacağız.
Yukarıdaki kodlarda yer alan “connect” metodu bizim için sadece bir komutla bağlantıyı gerçekleştiriyor. Verdiğimiz 4 parametre ise veri tabanına güvenli bir şekilde bağlanmamızı sağlıyor.
Mongoose Şema Oluşturma
Eğer bir şema oluşturmak istiyorsanız mongoose size bunu da sunuyor. Örneğin bir blog projeniz için yayınlanacak postaların şemasını oluşturacağınızı düşünün. Bunu yapmak için projemize gidiyoruz. Ancak öncelikle mongoose paketini projeye dahil ettiğinizden emin olun.
<pre style="background: rgb(238, 238, 238); border: 1px dashed rgb(153, 153, 153); line-height: 14px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; width: 592.016px;"><code style="background-attachment: initial; background-clip: initial; background-color: #f1f1f1; background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat; background-size: initial; background: url("images/code.gif") left top no-repeat rgb(241, 241, 241); border-color: rgb(221, 221, 221); border-image: initial; border-style: dotted dotted dotted solid; border-width: 1px 1px 1px 10px; display: block; margin: 0px; outline: 0px; padding: 20px; vertical-align: baseline;">const PostSchema = new mongoose.Schema({
})
Bir post şeması oluşturacağımızı söylemiştik. Bu yüzden “PostSchema” isimli bir değişken oluşturuyoruz. Ve mongoose paketinin “Schema” fonksiyonunu kullanarak şemamızı tek kodla oluşturuyoruz. Artık tek yapmamız gereken şemaya vereceğimiz değerleri girmek.
Ben blog projesi için post şeması oluşturacağım için şemama başlık, açıklama, içerik değerlerini veriyorum.
Son olarak şemam aşağıdaki gibi gözüküyor.
<pre style="background: rgb(238, 238, 238); border: 1px dashed rgb(153, 153, 153); line-height: 14px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; width: 592.016px;"><code style="background-attachment: initial; background-clip: initial; background-color: #f1f1f1; background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat; background-size: initial; background: url("images/code.gif") left top no-repeat rgb(241, 241, 241); border-color: rgb(221, 221, 221); border-image: initial; border-style: dotted dotted dotted solid; border-width: 1px 1px 1px 10px; display: block; margin: 0px; outline: 0px; padding: 20px; vertical-align: baseline;">const PostSchema = new mongoose.Schema({
title: String,
description: String,
content: String
})
Daha sonra bunu bir model olarak belirtmem lazım.
<pre style="background: rgb(238, 238, 238); border: 1px dashed rgb(153, 153, 153); line-height: 14px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; width: 592.016px;"><code style="background-attachment: initial; background-clip: initial; background-color: #f1f1f1; background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat; background-size: initial; background: url("images/code.gif") left top no-repeat rgb(241, 241, 241); border-color: rgb(221, 221, 221); border-image: initial; border-style: dotted dotted dotted solid; border-width: 1px 1px 1px 10px; display: block; margin: 0px; outline: 0px; padding: 20px; vertical-align: baseline;">const Post = mongoose.model('Post', PostSchema)
Böylelikle şemamı artık bunu istediğim yerde “Post” değişkenini çağırarak kullanabilirim.
Eğer şemayı dışa aktarmak, yani projede yer alan diğer dosyalarında bu modele ulaşmasını istiyorsanız aşağıdaki kodu yazmalısınız.
<pre style="background: rgb(238, 238, 238); border: 1px dashed rgb(153, 153, 153); line-height: 14px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; width: 592.016px;"><code style="background-attachment: initial; background-clip: initial; background-color: #f1f1f1; background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat; background-size: initial; background: url("images/code.gif") left top no-repeat rgb(241, 241, 241); border-color: rgb(221, 221, 221); border-image: initial; border-style: dotted dotted dotted solid; border-width: 1px 1px 1px 10px; display: block; margin: 0px; outline: 0px; padding: 20px; vertical-align: baseline;">module.exports = Post
Böylelikle “Post” değişkenini diğer dosyalara açıyoruz. Başka bir dosyada modeli kullanmak içinse aşağıdaki kodu yazıyoruz.
<pre style="background: rgb(238, 238, 238); border: 1px dashed rgb(153, 153, 153); line-height: 14px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; width: 592.016px;"><code style="background-attachment: initial; background-clip: initial; background-color: #f1f1f1; background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat; background-size: initial; background: url("images/code.gif") left top no-repeat rgb(241, 241, 241); border-color: rgb(221, 221, 221); border-image: initial; border-style: dotted dotted dotted solid; border-width: 1px 1px 1px 10px; display: block; margin: 0px; outline: 0px; padding: 20px; vertical-align: baseline;">const Post = require('BURAYA ŞEMA YOLUNU YAZINIZ/Post');