Odak modu

Node.js

Kurs - Öğrenci İlişkisi

Kurs ve Öğrenci İlişkisi


Smartedu projemizde bulunan kurslar ile öğrenciler arasında da ilişki bulunmasını isteriz. Öğrenci kullanıcıların kendilerini bir kursa kaydedebilmesini ve bu kayıt işlemini istediğinde sonlandırmasını da isteyebiliriz.


Bu işlemler için öncelikli olarak yapmamız gereken USER modeli içerisinde courses şeklinde bir alan oluşturacağız ve bu alanın referansı yani ilişkili olduğu mode ile Course modeli.


 courses:[{
    type: mongoose.Schema.Types.ObjectId,
    ref:'Course'
  }]


Yukarıda da gördüğünüz üzere courses alanı bir array ve öğrenci her yeni kursa kaydolduğunda bu arrayimize yeni bir kurs bilgisi eklenecek. Bu işlemi yapacak enroll fonksiyonunu aşağıda görebilirsiniz.


exports.enrollCourse = async (req, res) => {
  try {

    const user = await User.findById(req.session.userID);
    await user.courses.push({_id:req.body.course_id});
    await user.save();

    res.status(200).redirect('/users/dashboard');
  } catch (error) {
    res.status(400).json({
      status: 'fail',
      error,
    });
  }
};


Sonrasında courseRoute.js dosyasında ilgili yönlendirmeyi yapalım:


router.route('/enroll').post(courseController.enrollCourse);


Enroll işlemini yaptığımızda bizim ihtiyacımız olan kurs bilgisini ilgili butona tıkladığımızda göndereceğiz. Bu butonu bir form alanında tanımlayacağız. course.ejs dosyası içerisine aşağıdaki formu ekleyeceğiz.


<form method="POST" action="/courses/enroll">
  <input type="hidden" name="course_id" value="<%= course._id %>">
  <button class="btn btn-lg btn-warning text-white"><span>ENROLL</span></button>
</form>



Proje GitHub


Çalışma Özel GitHub

Background Pattern
Birlikte öğrenelim

Sektörde en çok aranan yazılım becerilerini kazan

Yapay zeka desteği, birebir mentörlük saatleri, canlı dersler ve senin için özel hazırlanmış içeriklerle eksiklerini tamamla, düzenli geri bildirimler al ve öğrenme sürecini en verimli hale getir.

Yunus Emre Kabakcı

Patika+ mezunu

Patika+ Fullstack Web Development Bootcamp mezunumuz Yunus Emre,

3 ay içinde Katar’dan aldığı teklif ile, global bir şirket olan Pavo Group’da işe başladı!


“İçerik zenginliği, mentor desteği, ileriye dönük bir network sağlaması ve dünyada en çok tercih edilen frameworkler üzerinden bir eğitim veriyor olması Patika+’ı tercih etmemin temel sebepleri oldu!“

Yorumlar

Yorum yapabilmek için derse kayıt olmalısın!