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.
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"
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.
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