NodeJS MongoDB ile Kayit Sistemi

Yükleme

Tablolar Ekrani

Yükleme islemi yada kendiniz tekrar yazabilmeniz icin gereksinimleri tamamlayiniz:

Temel Gereksinimler:

1- Node! (Cok bariz bir bilgi)

2- Npm!

3- MongoDB

4- MongoDB-Compass (opsiyonel tabii)

NPM yüklemeleri:

1- npm install express

2- npm install –save-dev nodemon

3- npm install pug

4- npm install body-parser (SADECE EXPRESS < = V3 )

5- npm install express-validator

6- npm install dotenv

7- npm install mongoose

8- npm install http-auth

Digerleri:

1- Daha güzel htaccess sifreleri icin : https://hostingcanada.org/htpasswd-generator/

2- Bootstrap : https://getbootstrap.com/docs/4.4/getting-started/download/

Baslangic

Projeyi init etmeyi unutmayiniz:

$ npm init -y

Projeyi calistirma ve inceleme:

Projeyi calistirmak icin : npm run proje

Hata almadiginizdan emin olduktan sonra : http://localhost:3000 üstünde Kayitlari yapabilirsiniz.

Kayitlari incelemek icin : http://localhost:3000/registrations addressine gidin.

Giris

Giris sifresini degistirmezseniz standart giris ve sifre bilgisi:

Kullanici Adi: saizzou

Kullanici Sifresi : test12345

HTACCESS Bilgilendirme

Projedeki users.htpasswd icerigini degistirin bunu sifreleyip yapmanizi tavsiye ederim. Kolay bir MD5 sifrelemesi icin : https://hostingcanada.org/htpasswd-generator/

Projeyi yayinlayacaksaniz dikkat!

Bulunan users.htpasswd dosyasi iceriginin izinlerini degistirin! 755 izinini 644 olarak degistirmenizi tavsiye ederim!

const express = require('express');
const path = require('path');
const routes = require('./routes/index');


const app = express();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(express.urlencoded({extended: true})); // Eski tip Express (<=3) kullananlar buraya bodyParse kullanmali!
app.use(express.json()) 
app.use('/', routes); // Sakin bunu basa atamayin Parser isleminden önce olursa Parser dönümü bosa cikar!
app.use(express.static('public'));

module.exports = app;
require('dotenv').config();
const Registration = require('./models/Registration');
const mongoose = require('mongoose');

mongoose.connect(process.env.DATABASE, {
   useNewUrlParser: true,
   useUnifiedTopology: true 
});

mongoose.connection
    .on('open', () => {
        console.log('Mongoose baglantisi olusturuldu!');
    })
    .on('error', (err) => {
        console.log(`Baglanti hatasi: ${err.message}`);
    });


const app = require('./app');
const server = app.listen(3000, () => {
    console.log(`Express ${server.address().port} Portu üstünde calisiyor!`);
});
const express = require('express');
const mongoose = require('mongoose');
const { check, validationResult } = require('express-validator');
const router = express.Router();
const Registration = mongoose.model('Registration');
const path = require('path');
const auth = require('http-auth');
const basic = auth.basic({
  file: path.join(__dirname, '../users.htpasswd'),
});

module.exports = router;
router.get('/', (req, res) => {
  res.render('form', { title: 'Giris Formu!'});
  
});

router.post('/', [
  check('name')
    .isLength({min: 1 })
    .withMessage('Lütfen bir isim giriniz!'),
  check('email')
    .isLength({min: 5 })
    .withMessage('Email addressi gecersizdir!'),
    check('email')
    .isEmail()
    .withMessage('Email addressi girmediniz!')
] ,
(req, res) => {
  const errors = validationResult(req);
  console.log(req.body);

  if (errors.isEmpty()){
    const registration = new Registration(req.body);
    registration.save()
      .then(() => { res.send('Kayit icin Tesekkürtler!'); })
      .catch((err) => {
        console.log(err);
        res.send('Sanirim birseyler ters gitti!');
      });
  } else {
    res.render('form', {
      title: 'Giris Formu!',
      errors: errors.array(),
      data: req.body,
      });
    }
});

router.get('/registrations', basic.check((req, res) =>{
  Registration.find()
  .then((registrations) => {
    res.render('index', { title: 'Kayitli Üyeler Listesi', registrations});
  })
  .catch(() => { res.send('Üzgünüm bir sorun olustu!'); });
}));
const mongoose = require('mongoose');

const registrationSchema = new mongoose.Schema({
    name: {
        type: String,
        trim: true,
    },
    email: {
        type: String,
        trim: true,
    },
});

module.exports = mongoose.model('Registration', registrationSchema);
extends layout 

block content
    -data = data || {}

    if errors 
        ul 
            for error in errors 
                li= error.msg
                //li= arasina bosluk konulmamali! yoksa link fonksiyonu calismayacaktir. Pug kodlamada bosluklar önemlidir!
    form(action="." method="POST" class="form-registration")
        label(for="name") Isim:
        input(
            type="text"
            id="name"
            name="name"
            class="form-control"
            value=data.name
        )

        label(for="email") Email:
        input(
            type="email"
            id="email"
            name="email"
            class="form-control"
            value=data.email
        )

        input(type="submit" value="Giris Yap" class="btn btn-lg btn-primary btn-block")
extends layout 

block content 
    p Kayitli üyeler Listesi:
    if registrations.length 
        table.listing-table.table-dark.table-striped
            tr 
                th Isim  
                th Email
            each registration in registrations 
                tr 
                    td= registration.name 
                    
                    td= registration.email 
    else 
        p Kayitli Üye bulunamadi! 
doctype html 
html 
    head 
        title= `${title}`
        link(rel='stylesheet', href='/css/bootstrap.min.css')
        link(rel='stylesheet', href='/css/styles.css')
    
    body 
        div.container.listing-reg 
            h1 Yeni bir App! 

            block content 

Yorum bırakın

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