"Enter"a basıp içeriğe geçin

NodeJS + Express + MongoDB REST API Rehberi Bölüm 3

Herkese tekrardan merhaba. Makale serimizin önceki bölümünde controller’lara geçmiştik, bu bölümünde MongoDB bağlantısını gerçekleştireceğiz.

Öncelikle MongoDB’ye erişimi 2 farklı şekilde yapabiliriz.

1- MongoDB’yi bilgisayarımıza kurarak ve MongoDB’nin local sunucusuna bağlantı sağlayarak.

2- MongoDB Atlas’ı kullanarak. MongoDB’nin kendi sunucularında bir cluster oluşturulup bağlantı oraya yapılarak.

Ben 2. yolu seçiyorum, pratik olması adına. Local’de kullanmanın da, Atlas kullanmanın da birbirine göre avantajları / dezavantajları mevcut.

Öncelikle şu adresten MongoDB’ye giriş yaparak başlayacağız.

Giriş yaptıktan sonra MongoDB Cloud karşımıza gelecek. Oluşturmanız gerekirse yeni bir project oluşturun. Ardından ise yeni bir cluster oluşturun.

Normalde MongoDB ücretli bir servis fakat yeni başlayanlar için 1 cluster ücretsiz veriliyor. Sağdaki free seçeneğinden free cluster oluşturalım.

Cluster’ımız AWS üzerinde barınsın. Amazon forever! Ardından cluter’ımızın lokasyonunu Frankfurt olarak belirleyelim, ne kadar yakın o kadar iyi. Dilerseniz Cluster Name kısmından da cluster’ınızın ismini değiştirebilirsiniz.

Ardından FREE olarak cluster’ımızı oluşturalım.

Yapacağımız işlemler biraz vakit alacak, oluşturulması vs. Bekleyelim.

Oluşturulduktan sonra Connect seçeneğini seçelim. Her seferinde Mongo’ya IP tanımlamamak için “Allow access from anywhere” seçeneğini seçelim.

IP Adresi seçeneğini varsayılan olarak ekle diyelim. Aşağıda da bir kullanıcı oluşturmamız gerekiyor. Kullanıcı adı ve basit bir parola girelim.

Ardından ise Choose connection method kısmına gelelim. Connect your application seçeneğini seçelim.

Node.js seçili olduğundan emin olalım. Node.js seçiliyken verdiği bağlantı adresini kopyalayalım. Uygulamamızdan bu bağlantı sayesinde bağlanacağız.

Ve evet, uygulamamıza geri dönebiliriz.

Hatırlarsanız eğer projemize dotenv adında bir paket kurmuştuk. .env dosyası oluşturacağız ve gizli olacak olan bütün bilgileri burada tutacağız. Şimdi projemizin içerisine .env adında bir dosya oluşturalım.

Aşağıdaki gibi ekleme yapalım ve URL kısmına Mongo’dan aldığımız URL’i yapıştıralım. URL’in içerisindeki <password> kısmına ise oluşturduğumuz user’ın parolasını yazalım.

MONGO_URL=URL

Şimdi ise Mongo’ya bağlantımızı yapalım. config adında bir klasör oluşturalım ve içerisine db.js adında bir dosya oluşturalım.

Öncelikle mongoose’u tanımlayalım. Mongo ile yapacağımız işlemlerde mongoose’un fonksiyonlarından yararlanacağız.

const mongoose = require('mongoose');

Ardından .env dosyasındaki verileri çekebilmemiz için dotenv tanımlamasını yapalım.

const mongoose = require('mongoose');
require('dotenv').config();

Tanımlamalarımızı yaptıktan sonra Mongo ile yapacağımız bağlantıyı gerçekleştirelim.

const connectDB = async () => {
    try {
        await mongoose.connect(process.env.MONGO_URL, {
            useNewUrlParser: true,
            useUnifiedTopology: true,
            useCreateIndex: true,
            useNewUrlParser: true,
            useFindAndModify: false
        });
        console.log('MongoDB connected.');
    } catch(err) {
        console.error(err.message);
        process.exit(1);
    }
}

module.exports = connectDB;

Ardından server dosyamıza gidelim ve db.js tanımlamasını yaparak Mongo bağlantımızı yapalım.

const express = require('express');
const app = express();

const connectDB = require('./config/db');

connectDB();

app.use('/api', require('./routes/routes'));

app.set('port', process.env.PORT || 5000);

app.listen(app.get('port'), () => {
    console.log(`Server is listening on http://localhost:${app.get('port')}`);
});

Her şeyi doğru yaptıysak eğer projemizi çalıştırdığımız zaman Server is listening on http://localhost:5000 çıktısının hemen altında MongoDB connected. yazısını görebiliriz.

Başarılı bir şekilde Mongo bağlantımızı gerçekleştirdik. Sonraki bölümde Mongo ile veri işlemlerine başlayacağız.

Bu bölümün kaynak kodları.

<- Önceki bölüm

-> Sonraki bölüm

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir