Используй промокод SUMMERUP - экономь на горячем, трать на холодное! 🍧 🍸 🍋 🍉 🍹
⚙️ Оптимизация сетей. Некоторые курсы могут быть недоступны для онлайн-просмотра до обеда. Приносим извинения за временные неудобства. Загрузка курсов работает в штатном режиме.
const mongooese = require("mongoose")
new Shema( {
id: {
type: mongoose.Schema.Types.ObjectId,
required: true,
auto: true
},
.......
})
Чтобы решить данную пробему воспользуйтесь этим, это необходимо дописать в схему
id: {
type: mongoose.Schema.Types.ObjectId,
required: true,
auto: true
},
const {v4: uuidv4} = require('uuid')
не забудьте модуль path
это app.use(express.static(path.join(__dirname, "/public")))
а не app.use(express.static("/public"))
У кого буду проблемы когда дойдете до урока ПЕРЕПИСЫВАЕМ МОДЕЛЬ (mongodb)
const courses = await Course.find().lean() или
const courses = JSON.parse(JSON.stringify(await Course.find()))
иначе вместо этого [ {}, {}, .... ] будете получать [model, model, ......]
если что почитайте внизу коменты там кто-то уже сталкивался с этим но в итоге вызываю функцию lean() - await Course.find().lean()
Мне вот эта их инструкция помогла:
https://developers.sendinblue.com/recipes/batch-send-customised-html-emails-in-nodejs
Solution => https://mongoosejs.com/docs/migrating_to_6.html#removed-execpopulate
помогло добавление в массив:
routes/cart.js
const user = await req.user
.populate(['cart.items.courseId'])
https://github.com/vladyslavkapral/wfms-nodecc26.git
в файле order.js
router.get('/', async (req, res) => {
try {
const orders = await Order.find({
'user.userId': req.user.id
}).populate('user.userId').lean(). /// {
return {
...val, /// {
return total += course.course.price * course.count
}, 0)
}
})
})
} catch (e) {
console.log(e)
}
})
1. Устанавливаем следующие пакеты из npm
npm install handlebars
npm install @handlebars/allow-prototype-access
2. Подключаем их в начале файла index.js
const Handlebars = require('handlebars')
const { allowInsecurePrototypeAccess } = require('@handlebars/allow-prototype-access')
3. Заменяем фрагмент кода
const hbs = exphbs.create({
defaultLayout: 'main',
extname: 'hbs'
})
НА
const hbs = exphbs.create({
defaultLayout: 'main',
extname: 'hbs',
handlebars: allowInsecurePrototypeAccess(Handlebars)
})
Я другое решение применил мне тоже помогло,
const {Router} = require('express')
const Course = require('../modules/course')
const router = Router()
router.get('/', async (req, res) => {
const courses = await Course.find().lean()
res.render('courses', {title: 'Courses', isCourses: true, courses})
})
router.get('/:id/edit', async (req, res) => {
if (!req.query.allow) {
return res.redirect('/')
}
const course = await Course.findById(req.params.id).lean()
res.render('course-edit', {
title: `Edit ${course.title}`,
course
})
})
везде где вызываете await Course в самом конце ставите .lean()
например вот как
router.get('/', async (req, res) => {
const courses = await Course.find().lean()
res.render('courses', {title: 'Courses', isCourses: true, courses})
})