Focus mode
SmartEdu projemizde kursları listeledik, bu çalışmamızda ise her kursun kendisine ait olan tekil kurs sayfalarını oluşturacağız. Bunun için öncelikle ilgili controller
fonksiyonu olan getCourse
fonksiyonunu yazıyoruz. Burada çalışmamızda da dikkat ettiğimiz gibi tekil kursu öncesinde _id
ile sonrasında ise slug
ile yakalamış olduk.
exports.getCourse = async (req, res) => {
try {
const course = await Course.findOne({slug: req.params.slug})
res.status(200).render('course', {
course,
page_name: 'courses',
});
} catch (error) {
res.status(400).json({
status: 'fail',
error,
});
}
};
İlgili controller fonksiyonunu yazdıktan sonra ilgili yönlendirmeyi yapalım.
router.route('/:slug').get(courseController.getCourse);
Bundan sonrasında yapmamız gereken ise istediğimiz teplate dosyasına verileri yazmak.
Tekil kurs sayfalarını _id
parametersi ile çağırdığımızda bu ID url de 6095037e031db830c0a724ee
benzer _id parametresinin görünmesine neden olur. Bunun yerinde daha anlamlı olan bir slug ifadesinin bulunmasını isteriz. Bunun için slugify paketinden faydalanacağız. İndirelim paket
npm i slugify
Bu paketi Course.js
model dosyasına çağıralım: const slugify = require('slugify');
Sırada ise modelimizdeki hangi alandan slug
oluşturacağız, onu belirtmemiz gerekir. Biz kendi çalışmamızda name
alanından oluşturacağız.
CourseSchema.pre('validate', function(next){
this.slug = slugify(this.name, {
lower:true,
strict:true
})
next();
})
Programs to Accelerate Your Progress in a Software Career
Join our 4-8 month intensive Patika+ bootcamps, start with the fundamentals and gain comprehensive knowledge to kickstart your software career!
You need to enroll in the course to be able to comment!