Oturum sistemini de ayarladığımıza göre artık veritabanı yönetimine geçebiliriz. Şimdi 3NF kurallarına uyan bir veritabanı oluşturalım.
id | name | date | |
---|---|---|---|
kullanıcının id'si | kullanıcının kendini açıkladığı isim | kullanıcının email adresi | kullanının kayıt tarihi |
Şimdilik bu şekilde bir veritabanı oluşturduk. Bu makalede veritabanı bağlantılarını göreceğiz.
Sistemde MySQL kullanmayı istemediğim için PostgreSQL kullanmaya karar verdim. Bundan sonra devam etmek için bilgisayarınıza PostgreSQL kurmanız gerekiyor. Buradan takip ederek kurulumunu yapabilirsiniz. Kurulumu yaptıysanız satranç için gerekli olan role ve veritabanı işlerini halledelim.
PostgreSQL bilgisayarınıza kurulduysa komut satırınan veritabanına giriş yapalım:
$ psql -U postgres
Giriş yaptığınıza sizi postgres=#
karşılıyor olmalı. Şimdi ise satranç için role ve veritabanını oluşturalım.
postgres=# CREATE ROLE satranc_user WITH LOGIN;
postgres=# CREATE DATABASE satranc;
Role oluşturduk şimdi onun isminde giriş yapmalıyız. CTRL + D ile çıkış yapalım ve tekrar girelim:
$ psql -U satranc_user -d satranc
Ardından veritabanımızın ekli olduğunu görmek için \l
komutunu çalıştıralım.
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
satranc | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
.
.
.
.
(4 rows)
Tablomuzu oluşturmanın tam sırası.
satranc=> CREATE TABLE users (id SERIAL PRIMARY KEY, name CHAR(255), email CHAR(1024), date DATE);
Tablomuz da oluştuğuna göre artık nodejs ile bu sisteme bağlanabiliriz.
Node.js'te pg modülünü kullanacağız. Bu modül node.js'in PostgreSQL ile bağlantı kurmasını sağlıyor. pg kurulumu:
$ npm i pg --save-dev
Uygulamamızda bir ayar dosyası tutmalıyız veritabanı veya diğer ayarlar için. O yüzden server/config.js
dosyasını oluşturalım ve db değerine PostgreSQL ayarlarını ekleyelim.
module.exports = {
db: {
name: 'satranc',
user: 'satranc_user',
host: 'localhost',
password: '',
port: 5432,
}
}
Veritabanı ile alakalı işlemleri yönetmek için server/database
dizinini oluşturup server/database/index.js
dosyasını düzenliyoruz.
// pg modülünün Client modeline ihtiyacımız var
const { Client } = require('pg');
// ayarlarımızı getiriyoruz
const config = require('../config');
class Database {
constructor() {
this.client = null;
}
connect(){
this.client = new Client({
user: config.db.user,
host: config.db.host,
database: config.db.name,
password: config.db.password,
port: config.db.port,
});
return this.client.connect();
}
select(params){
var self = this;
return new Promise((resolve, reject) => {
// denemek için sadece bu sorguyu çalıştıralım
this.client.query( 'SELECT * FROM users', (err, res) => {
if (err !== null) {
reject(err);
} else {
resolve(res.rows);
}
})
});
}
}
// import ettiğimiz yerde direkt database.<method-adı> şeklinde kullanmak için bu şekilde export ediyoruz
module.exports = new Database();
Veritabanı sınıfımızı oluşturduğumuza göre bağlantımızı yapmak için server/uses.js
dosyasında kullanalım.
…
const database = require('./database');
module.exports = (app) => {
const client = redis.createClient();
// uygulamamızı veritabanına bağlıyoruz
database.connect();
app.use(session({
…
Evet uygulamamız başladığımızda veritabanımıza bağlanılabilir hale gelecek. Bu durumda bizim yapacağımız şeyler CRUD yapmak olacak fakat onu bu derste anlatmayacağım. Çünkü CRUD için standart bir yapı oluşturmamız gerekecek. Onu diğerki derslerde göreceğiz.
Biz kullanıcıları görmek için server/index.js
dosyasında şu değişiklikleri yapabiliriz:
...
const database = require('./database');
...
app.get('/', (req, res) => {
database.select()
.then(data => {
res.send(data);
}, err => {
res.send(err);
})
})
...
Böylelikle kullanıcı listesini getirebileceğiz. şimdi sunucumuzu artık terminale node server/server.js
yazarak başlatmayalım onun yerine package.json
dosyasındaki scripts değerine ekleyelim.
...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start:server": "node server/index.js"
},
...
npm run start:server
komutunu ile sunucumuzu çalıştıralım.
localhost:3000
adresine giriş yaptığımızda böyle bir boş dizi ile karşılaşacağız []
çünkü henüz bi kullanıcı eklemedik.
Şuan CRUD'u yapmadığımız için geçici olarak kullanıcı eklemek için psql kabuk komutundan ekleyelim.
$ psql -U satranc_user -d satranc
Ardından insert komutumuzu çalıştıralım ve Ctrl + D kombinasyonu ile çıkalım.
satranc => INSERT INTO users (name, email, date) VALUES ('Avare Kodcu', 'test@avarekodcu.com', NOW());
Sunucumuzu tekrar başlatalım ve aynı şekilde localhost:3000
adresine bir istekte bulunalım. İstekten dönen cevap:
[{"id":1,"name":"Avare Kodcu ","email":"abdurrahmaneker58@gmail.com ","date":"2018-01-27T21:00:00.000Z"}]
Bu cevabın uzun dönmesinin sebebi veritabanında char()
olarak tanımlama yaptığımız içindi. Biz tabi sorguyu çekerken şu şekilde çekmiş olsaydık:
select RTRIM(name) as name, RTRIM(email) as email, date from users;
Bu şekilde bir response dönerdi:
[{"name":"Avare Kodcu","email":"abdurrahmaneker58@gmail.com","date":"2018-01-27T21:00:00.000Z"}]
Bu haftaki konu bu kadardı. Okuduğunuz ve zaman ayırdığınız için teşekkür ederim. Diğer bölümde görüşmek üzere sağlıcakla kalın :)
Düşündüklerin nedir ?
Yorumlar ({{totalCommentCount}})
{{commentLike149Count}} beğenme 2 yıl önce