MongoDB veri okumak ve yazmak

MongoDB veri okumak ve yazmak

MongoDB veri okumak ve yazmak

Bir önceki makalede MongoDB veritabanına nasıl bağlanabileceğimizden bahsetmiştik.

Bu derste D ile veritabanına veri yazmayı ve okumayı öğreneceğiz.

Kiraz dizininde iken kaynak dosyamız olan app.d kütügünü bir metin düzenleyici ile açıyoruz.

$ emacs source/app.d

İçindeki kaynak kodu değiştiriyoruz.

import vibe.http.server : İstek = HTTPServerRequest;
import vibe.http.server : Yanıt = HTTPServerResponse;
import vibe.http.server : sunucuyuBaşlat = listenHTTP;
import vibe.http.server : SunucuAyarları = HTTPServerSettings;
import vibe.core.log : bilgiVer = logInfo;
import vibe.http.router : Yönlendirici = URLRouter;
import vibe.db.mongo.mongo : bağlan = connectMongoDB;
import vibe.db.mongo.collection : name;
import vibe.core.core: çalıştır = runApplication;
import vibe.data.bson;

struct Kullanıcı
{
    @name("_id") int no;
    string isim;
    string şifre;
}

void günlüğeYaz (İstek istek, Yanıt yanıt)
{
    bilgiVer("Veritabanına bağlanıyorum...");
    auto veritabanı = bağlan("127.0.0.1").getDatabase("kiraz");
    auto kullanıcılar = veritabanı["kullanıcılar"];

    bilgiVer("Veri ekliyorum...");
    Kullanıcı mehmet;
    mehmet.no = 9;
    mehmet.isim = "Mehmet";
    mehmet.şifre = "yok";
    kullanıcılar.insert(mehmet);
    yanıt.writeBody("İşlem başarılı");
}

void günlük (İstek istek, Yanıt yanıt)
{
    bilgiVer("Veritabanına bağlanıyorum...");

    auto veritabanı = bağlan("127.0.0.1").getDatabase("kiraz");
    auto kullanıcılar = veritabanı["kullanıcılar"];

    bilgiVer("Veritabanındaki tüm kayıtları gösteriyorum...");

    auto sonuç = kullanıcılar.find();

    foreach (i, kayıt; sonuç.byPair)
        bilgiVer("Kayıt %d: %s", i, kayıt.toJson().toString());

    yanıt.writeBody("İşlem başarılı");
}

void main()
{
    auto yolAtayıcı = new Yönlendirici;
    yolAtayıcı.get("/günlük", &günlük);
    yolAtayıcı.get("/günlük/yaz", &günlüğeYaz);

    auto ayarlar = new SunucuAyarları;
    ayarlar.port = 8080;
    ayarlar.bindAddresses = ["::1", "127.0.0.1"];
    sunucuyuBaşlat(ayarlar, yolAtayıcı);

    bilgiVer("Lütfen tarayıcınızla http://127.0.0.1:8080/ adresini açınız.");
    çalıştır();
}

dub komutu ile uygulamayı derleyip, çalıştırınız.

Tarayıcınızla http://localhost:8080/günlük adresini açınız.

Daha sonra tarayıcı ile http://localhost:8080/günlük/yaz adresini açınız.

Tekrar günlük adresini açtığınızda yeni bir kayıt eklendiğini görebilirsiniz.

MongoDB veri okumak

Yeni kullanıcılar oluşturmak

Kullanıcı oluşturmak için aşağıdaki uygulamayı kullanabiliriz.

import vibe.db.mongo.collection : name;

import std.random : karıştır = randomShuffle;
import std.stdio  : yaz = writeln;
import std.traits : Üyeler = EnumMembers;
import std.conv : to;
import std.random : rastgele = uniform;

alias metneÇevir = to!string;

struct Kullanıcı
{
    @name("_id") int no;
    string isim;
    string şifre;

    string toString()
    {
        return metneÇevir(no) ~ " " ~ isim ~ " " ~ şifre;
    }
}

static sayaç = 0;
enum İsimler { Ali, Veli, Ahmet, Ayşe, Irmak, Hasan, Hüseyin, Osman }
enum Şifreler { çokgizli, azgizli, gizlideğil, yok,
                basit, kolay, karışık, sağlam  }

static İsimler[] karışıkİsimler;
static Şifreler[] karışıkŞifreler;

Kullanıcı kullanıcıOluştur()
{
    if (sayaç == 0)
    {
        karışıkİsimler = [Üyeler!İsimler].karıştır();
        karışıkŞifreler = [Üyeler!Şifreler].karıştır();
    }

    Kullanıcı kullanıcı;
    kullanıcı.no = rastgele(10, 10000);
    kullanıcı.isim = metneÇevir(karışıkİsimler[sayaç]);
    kullanıcı.şifre = metneÇevir(karışıkŞifreler[sayaç]);
    sayaç += 1;
    if (sayaç == 8)
        sayaç = 0;
    return kullanıcı;
}

Bu kütüğü kaynak dizininde kullanıcı.d ismi ile kaydediniz.

Ana dizinde bulunan dub.sdl kütüğüne aşağıdaki satırı ekleyiniz.

sourceFiles "kaynak/ana.d" "kaynak/kullanıcı.d"

MongoDB birden fazla kayıt ekleme

Kaynak dizinindeki ana.d kütüğünü değiştirelim.

import vibe.http.server : İstek = HTTPServerRequest;
import vibe.http.server : Yanıt = HTTPServerResponse;
import vibe.http.server : sunucuyuBaşlat = listenHTTP;
import vibe.http.server : SunucuAyarları = HTTPServerSettings;
import vibe.core.log : bilgiVer = logInfo;
import vibe.http.router : Yönlendirici = URLRouter;
import vibe.db.mongo.mongo : bağlan = connectMongoDB;
import vibe.db.mongo.collection : name;
import vibe.core.core: çalıştır = runApplication;
import vibe.data.bson;

import std.random : karıştır = randomShuffle;
import std.traits : Üyeler = EnumMembers;
import std.conv : to;
import std.random: uniform;

import kullanıcı;


void günlüğeYaz (İstek istek, Yanıt yanıt)
{
    bilgiVer("Veritabanına bağlanıyorum...");
    auto veritabanı = bağlan("127.0.0.1").getDatabase("kiraz");
    auto kullanıcılar = veritabanı["kullanıcılar"];

    bilgiVer("Veri ekliyorum...");

    Kullanıcı kullanıcı = kullanıcıOluştur();
    kullanıcılar.insert(kullanıcı);
    yanıt.writeBody("İşlem başarılı");
}

void günlük (İstek istek, Yanıt yanıt)
{
    bilgiVer("Veritabanına bağlanıyorum...");

    auto veritabanı = bağlan("127.0.0.1").getDatabase("kiraz");
    auto kullanıcılar = veritabanı["kullanıcılar"];

    bilgiVer("Veritabanındaki tüm kayıtları gösteriyorum...");

    auto sonuç = kullanıcılar.find();

    foreach (i, kayıt; sonuç.byPair)
        bilgiVer("Kayıt %d: %s", i, kayıt.toJson().toString());

    yanıt.writeBody("İşlem başarılı");
}

void main()
{
    auto yolAtayıcı = new Yönlendirici;
    yolAtayıcı.get("/günlük", &günlük);
    yolAtayıcı.get("/günlük/yaz", &günlüğeYaz);

    auto ayarlar = new SunucuAyarları;
    ayarlar.port = 8080;
    ayarlar.bindAddresses = ["::1", "127.0.0.1"];
    sunucuyuBaşlat(ayarlar, yolAtayıcı);

    bilgiVer("Lütfen tarayıcınızla http://127.0.0.1:8080/ adresini açınız.");
    çalıştır();
}

Uygulamayı derleyip çalıştırmak için dub komutunu veriniz.

Ekle bölümünden bir kaç kayıt ekledikten sonra günlük adresini açınız.

MongoDB birden fazla kayıt eklemek

Uygulamanın kaynak kodunu indirmek

Uygulamanın kaynağını buradan indirebilirsiniz.

Eğer git kullanarak indirmek indirmek isterseniz

git clone https://codeberg.org/erdem/kiraz.git --branch Ders4

komutu ile bu dersi indirebilirsiniz.

Yorumlar

yorum yaz

Yorum yaz

Henüz yorum yok.