
webformyself
Webformyself - универсальная русскоязычная площадка, которая делает годные курсы по нескольким направлениям, от фреймворков и верстки до SEO...
NodeJS – мощная среда для серверной разработки на JavaScript, которая позволяет создавать быстрые, масштабируемые приложения и открывает путь к востребованной профессии FullStack-разработчика. Этот курс создан как практическое, структурированное и действительно полное руководство, помогающее уверенно освоить NodeJS с нуля до профессионального уровня.
Вы разберёте ключевые особенности NodeJS, научитесь эффективно работать с движком V8, поймёте принципы неблокирующего ввода‑вывода и освоите архитектуру масштабируемых серверных приложений.
Курс включает создание двух полноценных приложений: статического интернет‑магазина и сложного REST API. Эти проекты станут сильной частью вашего портфолио.
Вы изучите не только сам NodeJS, но и актуальные инструменты серверной разработки:
Вы сможете писать как клиентскую, так и серверную часть на одном языке, эффективно разделяя код и ускоряя разработку.
NodeJS обеспечивает отличную скорость работы и вычислений, что делает его идеальным решением для высоконагруженных приложений.
Неблокирующая модель ввода‑вывода и Event Loop позволяют легко обрабатывать тысячи параллельных запросов без увеличения задержек.
Для NodeJS существует огромное количество модулей, которые упрощают выполнение практически любой задачи — от работы с сетью до создания real‑time приложений.
Курс поможет укрепить знания JavaScript, расширить навыки серверной разработки и глубже понять, как связаны Frontend и Backend.
Вы быстро освоите востребованную технологию, улучшите качество своих проектов и сможете брать более сложные и дорогие заказы.
Автор курса — Senior FullStack JavaScript Developer с опытом Team Lead и более чем семилетней практикой в разработке, включая реальное обучение. Благодаря этому вы получите не теоретические догадки, а рабочие инструменты, проверенные на практике.
Вместо изучения разрозненной документации вы получаете системное, последовательное руководство на русском языке. На курсе объясняются не только отдельные технологии, но и то, как они работают вместе, формируя современное серверное приложение.
По востребованности и уровню зарплат FullStack JavaScript-разработчики стабильно занимают лидирующие позиции. NodeJS — прямой путь к доходу 100–120 тыс. руб. и выше, даже для специалистов с небольшим опытом, но хорошей практикой.

Webformyself - универсальная русскоязычная площадка, которая делает годные курсы по нескольким направлениям, от фреймворков и верстки до SEO...
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})
})