Полный Full Stack курс ReactJS + NodeJS для начинающих за 4 часа! (MongoDB, Express, React, NodeJS)

Sdílet
Vložit
  • čas přidán 11. 07. 2024
  • В этом видео ты научишься с нуля разрабатывать бэкенд на стэке MERN (MongoDB, Express, React, NodeJS) и подключать к фронтенду свой бэкенд. Также, к завершению урока ты научишься деплоить своё приложение на Heroku + Vercel.
    Курс идеально подойдёт для новичков, которые впервые решили попробовать NodeJS.
    👀 Чему ты научишься?
    1. Разрабатывать свой бэкенд
    2. Делать авторизацию и регистрацию backend + frontend
    3. Работать с базой данных (MongoDB)
    4. Разработке full stack проектов
    5. Делать загрузку файлов на сервер
    6. Подключать аутентификацию с помощью JWT
    7. Взаимодействовать фронтенд с бэкендом
    8. Деплоить фулл стэк приложение
    ⚙️ Программы:
    Insomnia - insomnia.rest/download
    MongoDB Compass - www.mongodb.com/products/compass (нужен VPN для доступа к скачиванию)
    📚 Готовые исходники: t.me/archakov_im/522
    🔗 Ссылки по материалу:
    - Vercel - vercel.com
    - Heroku - www.heroku.com
    - Офф. сайт JWT - jwt.io
    - Список HTTP-кодов - ru.wikipedia.org/wiki/%D0%A1%...
    🔗 Следите за обновлениями и информацией в:
    - Telegram-канале: t.me/archakov_im
    - VK: archakov_im
    - Личном блоге: archakov.im
    - GitHub: github.com/Archakov06
    - Моё резюме: career.habr.com/archakovim
    ⏰ Таймкоды:
    00:00:00 Бэкенд (начало)
    00:00:28 Теория по бэкенду
    00:08:26 Начало разработки бэкенда
    00:10:25 Установка библиотеки Express
    00:10:57 Подключаем модульный подход для NodeJS (import, export, es6 и т.п.)
    00:12:15 Начинаем разработку приложения на Express
    00:19:11 Делаем HTTP-запросы на приложение через Insomnia
    00:20:05 Создаем тестовую авторизацию
    00:23:26 Подключаем JSON Web Token (JWT)
    00:27:08 Делаем регистрацию + подключаем базу данных MongoDB
    00:31:18 Создаем модель UserModel
    00:36:07 Устанавливаем Express Validator и подключаем в проект
    00:44:38 Создаем пользователя в БД
    00:45:45 Шифруем пароль с помощью BCrypt
    00:48:45 Подключаемся к БД через программу MongoDB Compass
    00:51:47 Обрабатываем ошибки
    00:57:17 Скрываем пароль юзера из ответа
    00:58:35 Делаем реальную авторизацию
    01:04:53 Делаем роут на получение информации о профиле
    01:05:52 Создаем middleware (функцию посредник) - checkAuth.js
    01:16:47 Делаем небольшой рефакторинг index.js
    01:19:52 Создаем функционал для статей (CRUD)
    01:50:18 Делаем загрузку картинок на сервер (Multer)
    01:56:10 Возвращаем статические файлы (загруженные картинки)
    01:57:54 Создаем middleware - handleValidationErrors.js
    02:01:06 Рефакторим итоговый код бэкенда
    02:05:09 Фронтенд
    02:06:22 Изучаем структуру фронтенд проекта
    02:09:16 Подключаем React Router
    02:13:34 Подключаем Redux Toolkit
    02:15:26 Создаем slice для статей (posts)
    02:19:20 Настраиваем Axios
    02:21:13 Исправляем ошибку CORS
    02:23:23 Создаем асинхронный action в Redux Toolkit
    02:25:32 Сохраняем в стейт статус запроса и сами статьи
    02:32:58 Вытаскиваем тэги из бэкенда
    02:36:28 Делаем вывод полной записи
    02:44:01 Создаем функционал для авторизации
    03:00:10 Проверяем авторизован пользователь или нет
    03:06:00 Сохранять токен в LocalStorage, чтобы не выкидывало из аккаунта
    03:16:55 Делаем форму регистрации
    03:24:38 Разрешаем удалять статью только автору
    03:27:44 Форма создания статьи + Simple Editor
    03:34:24 Загрузка изображения на сервер
    03:43:04 Отправка статьи на бэкенд
    03:51:43 Рендерим статьи с помощью React Markdown
    03:54:10 Удаление статьи
    04:01:55 Редактирование статьи
    04:09:49 Что сказала кукуруза? (итого)
    04:10:25 Домашние задания для тебя
    04:13:02 Деплой блога на Heroku + Vercel
    04:14:24 Heroku
    04:17:56 Vercel
    04:23:45 Конец
    #nodejs #express #react #reactrouter #multer #markdown #deploy

Komentáře • 1K

  • @yakub8798
    @yakub8798 Před 2 lety +684

    Пж сделайте полный курс по node и experss, народ поддержите лайком !!!

    • @maxim.saharov
      @maxim.saharov Před rokem +15

      а зачем он тебе ? какая задача ? автор придумал идею и и сделал этот курс, что в ноде рассказывать ? как файлы перемещать) Предложи что идею что именно ты хочешь что бы сделал автор, что бы показал что именно на ноде?
      И тем более после этого курса ты сможеш я думаю и сам погуглить что нужно или документацию почитать и курс по ноде есть у Владилена Минина как вариант.

    • @yakub8798
      @yakub8798 Před rokem +4

      @@maxim.saharov я имел ввиду что было бы хорошо если он сделал курс по node для джунов где он будет реализовать интернет магазин

    • @maxim.saharov
      @maxim.saharov Před rokem +12

      @@yakub8798 думаю такое он должен только платно вылаживать на юдеми, потому что это мега колоссальный труд!

    • @yakub8798
      @yakub8798 Před rokem

      @@maxim.saharov да ты прав !

    • @yakub8798
      @yakub8798 Před rokem +5

      @@maxim.saharov но это может помочь с ростом аудитории так как по node таких курсов нет , в ру сегменте !

  • @unity_12
    @unity_12 Před 2 lety +5

    Долго я искал такое видео! Спасибо за ваш труд! Классно 👍

  • @user-zb4vg7iv8x
    @user-zb4vg7iv8x Před 2 lety +63

    Тебе огромное уважение и респект за твои труды💗 Продолжай в том же духе и повышай планку )

  • @enigma9445
    @enigma9445 Před 2 lety +7

    Черт, как же ты хорошо объясняешь, столько инфы новой и все идеально понял, спасибо друг 🙌

  • @vladimirvalko1108
    @vladimirvalko1108 Před 2 lety +4

    Спасибо за контент!
    Как всегда топ 💪🏻

  • @Goboz1
    @Goboz1 Před rokem +3

    очень приятно и легко смотрятся ваши видео, спасибо

  • @user-cb2bw2fx4j
    @user-cb2bw2fx4j Před rokem +1

    Спасибо за курс. Сначала с ужасом смотрел на домашнюю работу, но затем шаг за шагом и все получилось. Главное практика и обучение на собственных ошибках. Еще раз спасибо!! Ждем новых курсов!! Удачи!!

  • @alexanderkomanov4151
    @alexanderkomanov4151 Před rokem +1

    Нет слов передать благодарности! Я делаю похожий проект но с firestore - вот теперь буду делать полный fullstack!

  • @batm1x
    @batm1x Před 2 lety +6

    Шикарный курс, большое спасибо )

  • @lexandrio
    @lexandrio Před 2 lety +5

    Такой контент и за бесплатно, спасибо большое, много полезного можно узнать) 🔥

  • @antonvasyukov763
    @antonvasyukov763 Před rokem +1

    Супер видос! Так держать, более понятного разъяснения всего и вся нигде не встречал.
    Очень хотелось бы в будущем видео по созданию CRM системы простенькой

  • @user-cd1cv4lm7s
    @user-cd1cv4lm7s Před rokem

    Отличный контент ! Все по делу емко и максимально понятно. Спасибо огромное за труд !

  • @irohVlad
    @irohVlad Před rokem +14

    Это очень круто! То что нужно тем, кто посмотрел про теорию, но не знает как сделать что-то рабочее. Все очень понятно. Отдельное спасибо, что показал от начала и до деплоя, мало кто это делает, очень ценный курс.

  • @user-qr7lr4cs1k
    @user-qr7lr4cs1k Před 2 lety +6

    Это лучший данного рода курс на ютубе, правда.
    Спасибо за Ваши труды! 🙂

  • @alex-kobrin
    @alex-kobrin Před 2 lety

    Снова вернулся на твой канал , мне предстаит много наверстать, Спасибо за твою работу !

  • @denisunderonov
    @denisunderonov Před měsícem

    Всё очень понятно, спасибо, буду продолжать дальнейшее развитие в MERN

  • @nijy001
    @nijy001 Před 2 lety +3

    Это макимально крутое видео) Спасибо!

  • @user-qf4zx9qt6r
    @user-qf4zx9qt6r Před rokem +6

    Пожалуй самый лучший курс из всех по этой теме. Всё очень доступно. Нет к чему придраться. Большое спасибо. Буду следить за новыми выпусками.

  • @Evgeny..
    @Evgeny.. Před 2 lety +1

    Предвкушаю, что будет что-то интересное)) лайк уже поставил!))

  • @jscripts2697
    @jscripts2697 Před 2 lety

    Неожиданно, курс появился, Хотел бы и я записать в таком качестве курс. Спасибо за труд!

  • @uzbelyorestate
    @uzbelyorestate Před 2 lety +11

    единственный канал который я нашел так четко и ясно объясняет автор ! спасибо за тяжёлый труд! я подписался сразу же 😎

  • @duce201
    @duce201 Před 2 lety +27

    Спасибо большое за твой труд!!! Ты лучший!!! Офигенный курс и стэк!!!

  • @apexnuts9785
    @apexnuts9785 Před 2 lety +2

    Большое спасибо! Подчеркнул для себя пару фишек!

  • @user-ve8ux5yy7y
    @user-ve8ux5yy7y Před 9 měsíci +1

    Огонь. Решил подучить бэкенд дополнением к фронту, чтобы можно было создавать полноценные сайты и твоё видео чётко в тему. Спасибо большое

  • @user-xj8nv1lr1x
    @user-xj8nv1lr1x Před 2 lety +8

    Спасибо тебе за твои курсы!) Твой вклад в развитие русскоязычного айти сложно переоценить

  • @HelloWorld-bp1np
    @HelloWorld-bp1np Před rokem +115

    1:37:58 нормально ты автор, конечно, потролил. То-есть любой кто сделает get запрос может получить всю инфу из БД про всех авторов статей, включая email, хеши паролей, дату регистрации, короче тупо всю инфу. Понятно что курс для новичков, но это через чур. Как по твоему новичок найдет инфу как пофиксить это? Короче, немного посидев, нашел такое решение как передать туда только то что нужно (P.S. Не пойму почему так трудно было написать одну строчку автору) .populate({ path: "user", select: ["name", "avatar"] })

    • @serjmarkelov9915
      @serjmarkelov9915 Před rokem +4

      Спасибо!
      Поднимите этот коммент в топ, хоть курс и для новичков, но это наоборот важно подчеркнуть!

    • @Kleo_Wyatt
      @Kleo_Wyatt Před rokem +1

      Вряд ли это троллинг. Авторы тоже могут ошибаться или не заметить ошибки

    • @ayhanak8913
      @ayhanak8913 Před rokem

      почему то у меня тоже не работал Editable={userData?.id === obj.user._id}
      TypeError: Cannot read properties of null (reading '_id')

    • @ayhanak8913
      @ayhanak8913 Před rokem

      ​@@serjmarkelov9915 я тоже сагласен

    • @ayhanak8913
      @ayhanak8913 Před rokem

      А у меня почемуто не работал((

  • @user-tn8vr5du5m
    @user-tn8vr5du5m Před 2 lety +1

    реально крутой ролик получился, видно что заморочился, респект

  • @shokhrookhr3850
    @shokhrookhr3850 Před 2 lety +2

    Дэн ты нас балуешь)) Спасибо тебе большое!

  • @dw_tv3992
    @dw_tv3992 Před 2 lety +28

    Спасибо за шикарный курс. У кого сервак не конектится к облаку монгодб и в терминале срабатывает кэтч - перейдите на страницу вашего облака и найдите слева кнопку Network Access > разрешите доступ по любому IP (если у вас динамический ) либо можете указать конкретный (если у вас статический) и в обоих случаях вы используете только браузерный впн

    • @user-vc6mo5nl8g
      @user-vc6mo5nl8g Před 2 lety

      все равно не помогает... везде встали нули, но не работает )))

    • @dw_tv3992
      @dw_tv3992 Před 2 lety +1

      @@user-vc6mo5nl8g везде нули это и означает, что любой ip разрешен для подключения.
      проверьте строчку в серверном файле: mongoose.connect('.......') возможно у вас есть пароль, но в строке он не указан, либо его нет и в сроке это также некорректно отображено (в общем убедитесь что отсутствуют ошибки)

    • @olegger7436
      @olegger7436 Před 2 lety

      спасибо, помогло)

    • @BLVCK7
      @BLVCK7 Před 2 lety

      Мне помогло изменение версии при коннекте с Node 4.1 or later на 2.2.12 or later

    • @MaximLisyanskiy
      @MaximLisyanskiy Před 2 lety +1

      Огромное спасибо. Помогло

  • @jamalisrapilov
    @jamalisrapilov Před 2 lety +91

    Чувствую что это будет мегаохренительный курс. Спасибо за всё!

    • @darkside2436
      @darkside2436 Před 2 lety +4

      И твои чувства тебя не подводят 😎

    • @xeedreen2120
      @xeedreen2120 Před rokem

      Брат, и мои тоже наверно

    • @user-th4qi8iv3q
      @user-th4qi8iv3q Před rokem

      как успехи

    • @alexandrkruglyak
      @alexandrkruglyak Před rokem +1

      Кто хочет научиться писать микросервисы nodejs, docker - заходим в гости!🤝

  • @pashapofactu3897
    @pashapofactu3897 Před rokem

    Вот это действительно новый уровень ! Спасибо

  • @danorkalled1618
    @danorkalled1618 Před 2 lety +2

    как раз то, что нужно))
    огромное вам спасибо😊

  • @hermanherman7045
    @hermanherman7045 Před 2 lety +32

    Ещё не закончил React Pizza 2.0, но заранее предвкушаю процесс прохождения данного курса, потому что знаю, что контент будет топовый - максимально понятный и информативный!
    Спасибо🙏
    #MongoDB #Express #React #NodeJS #MERN

  • @jenek051
    @jenek051 Před 2 lety +6

    Крутое видеоя спасибо, очень информативно 🤘 #mongoDB, #express, #nodeJS,#frontend, #backend,#react

  • @supreme3331
    @supreme3331 Před 2 lety

    Огромная тебе уважуха за подобные проекты!!!👍

  • @user-bl4te2kg8v
    @user-bl4te2kg8v Před rokem

    Спасибо за труд. Здоровья тебе и благополучия

  • @wintriplains4532
    @wintriplains4532 Před měsícem +3

    Тип с именем Ян столкнулся с ошибкой: имя долдно содержать минимум 3 символа

  • @Ironman1703
    @Ironman1703 Před rokem

    Спасибо за труд, шел по твоим шагам в ролике, все получилось, не без трудностей конечно. Заливал уже на Render. Еще буду допиливать функционал из ДЗ.

  • @vladimiralexeev2829
    @vladimiralexeev2829 Před rokem +1

    Огромное спасибо! Было очень интересно.

  • @andreo5027
    @andreo5027 Před 2 měsíci +3

    досмотрел до конца нужно хотя бы ради каждого "да ёмаё".
    хороший курс, хоть и не идеальный. рекомендую.

  • @slava_tfdf
    @slava_tfdf Před rokem

    Спасибо за видео
    Обязательно пересмотрю ещё

  • @user-jg5wo9zm6q
    @user-jg5wo9zm6q Před 2 lety +2

    Мега охренительное СПАСИБО!

  • @serjmarkelov9915
    @serjmarkelov9915 Před rokem +7

    Обычно избегаю оставлять комментарии, чтобы не отвлекаться от прогресса, но Денис, спасибо тебе огромное, что так подробно объясняешь.
    Я думаю, для многих из СНГ, IT - это хорошая возможность подняться и изменить жизнь к лучшему, так что, как говорится: you are doing God's work

  • @hpcforum
    @hpcforum Před rokem +4

    То чувство, когда досмотрел 4-часовой курс и все проделывал вместе с автором. Спасибище огромное! 2 вопроса к тебе. Работал ли с php и правда ли хочешь бросить разработку? Частично слушал стрим, где ты на это намекаешь, но в то же время увидел план по трудоустройству в новую компанию в твоём блоге. Спасибо.

  • @1terbik1
    @1terbik1 Před rokem +1

    Лучший, спасибо за туториал по подключению к базе данных

  • @olehy5000
    @olehy5000 Před 2 lety

    Спасибо за Ваш труд! Очень полезный курс!

  • @madeining
    @madeining Před rokem +26

    1:42:22 - вернулась ошибка при отправке, это ошибка возникла потому что, начиная с версии Mongoose 5.0, метод Model.findOneAndUpdate() больше не принимает колбэк в качестве последнего аргумента. Вместо этого, он возвращает объект типа Query или Promise.
    Чтобы исправить эту ошибку, вам нужно изменить код таким образом, чтобы он использовал либо async/await, либо .then() и .catch() для управления асинхронными операциями.
    Как выглядил:
    PostModel.findOneAndUpdate(
    {
    _id: postId
    },
    {
    $inc: { viewsCount: 1 },
    },
    {
    returnDocument: 'after'
    },
    (err, doc) => {
    if(err) {
    return res.status(500).json({
    message: "Не удалось вернуть статью"
    })
    }
    if(!doc) {
    return res.status(404).json({
    message: "Статья не найдена"
    })
    }
    res.json(doc)
    )
    Как должен выглядеть:
    PostModel.findOneAndUpdate(
    { _id: postId } ,{ $inc: { viewsCount: 1 } },{ returnDocument: "After" } )
    .then(doc => res.json(doc))
    .catch(err => res.status(500).json({ message: "Статья не найдена" }))

    • @_alex.barrel
      @_alex.barrel Před rokem +1

      спасибо, выручили!

    • @AmericanDragon134
      @AmericanDragon134 Před rokem

      надо понизить версию mongoose на 6.10.0

    • @user-oo1wn9yl1t
      @user-oo1wn9yl1t Před 3 měsíci

      спасибо

    • @user-qi6oe4fc4n
      @user-qi6oe4fc4n Před 2 měsíci

      спасибо большое!!Добрый вы человек)) и очень многим думаю помогли

    • @dxdzdy2757
      @dxdzdy2757 Před měsícem

      Огромная благодарность!

  • @viacheslauabaimov3880
    @viacheslauabaimov3880 Před rokem +9

    TypeScript + Express было бы супер! Спасибо за работу

  • @alekseyberezov8020
    @alekseyberezov8020 Před rokem

    Дэнис, как всегда бомбический Full Stack курс получился! Спасибо тебе!!! #mongoDB, #express, #nodeJS, #frontend, #backend, #react

  • @murrmax1466
    @murrmax1466 Před 10 měsíci +2

    Братан, хорош! Контент в кайф! Можно еще? Вообще красавчик!!

  • @tomzak177
    @tomzak177 Před 8 měsíci +3

    Блин, я начал делать это ради того чтобы научится верстать, в итоге дохожу я до второго часа гайда и автор такой
    А Я УЖЕ ВСЕ СВЕРСТАЛ
    ВЕРСТАТЬ НЕ ПРИДЕТСЯ
    Спасибо папаша 😂

  • @user-qb4sd7hf6y
    @user-qb4sd7hf6y Před 10 měsíci

    Офигенно! Очень понятные обьянения. Спасибо!!!

  • @user-eb1cg9ln3u
    @user-eb1cg9ln3u Před rokem +1

    Спасибо за обучение, очень помогает новичкам.

  • @vladk3111
    @vladk3111 Před 2 lety +7

    Автор, спасибо за видео !!! Круто !
    47:15 - если быть совсем точным, бкрипт - это алгоритм формирования пароля, а соль - это не алгоритм, это как и пароль обычная строка, набор символов (буквы, цифры, знаки), которые добавляются к паролю для того, чтоб хранящиеся в базе 10 одинаковых паролей не имели одинаковый хэш.

    • @woodlandfantomas2044
      @woodlandfantomas2044 Před 2 lety

      Соль-в прямом смысле добавляет незначашие символы, подмешиваем соль.

    • @maxburner8338
      @maxburner8338 Před 2 lety +1

      Но есть алгоритм добавляющий соль,

    • @woodlandfantomas2044
      @woodlandfantomas2044 Před 2 lety

      @@maxburner8338 Да.

    • @diokgg
      @diokgg Před rokem

      А почему 47:50 при const salt = await bcrypt.genSalt(10) await-выдает ошибку

  • @user-yf3mq3lk7p
    @user-yf3mq3lk7p Před 2 lety +21

    Я очень долгое время пытался понять и начать писать код на raect, но всегда в голове была какая то каша из большого количества информации. Я полюбил твои курсы за то, что у тебя каждый курс сделан очень подробно, структурировано и понятно. С нетерпением жду новые курсы! Большое тебе спасибо за твой труд и удачи во всем!

  • @darkside2436
    @darkside2436 Před 2 lety +1

    Спасибо за твой тяжкий труд!

  • @v.demchenko
    @v.demchenko Před rokem

    Красавчик. Проделано огромное количество работы.

  • @daruanikko
    @daruanikko Před rokem +3

    2:17:22 Гениальное объяснение

  • @user-ev2fo1ky7u
    @user-ev2fo1ky7u Před 2 lety +17

    по поводу cloud.mongodb - для тех у кого динамичный ip и/или сменяются подсети, то будет нежданчик ввиду ошибки подключения к базе данных, решается это дело в разделе Security -> Quickstart, нужно добавить текущий ip или всю подсеть

    • @user-gk6xq8wk3w
      @user-gk6xq8wk3w Před 2 lety

      Нету там Security > Quickstart. Я рот топтал эту mongodb, два дня шатал их базу данных и она всё падала с ошибкой. Четыре раза удалял и создавал новый проект и новую бд - ни фига. Поставил в разрешенных IP все нули и свой ипшник- хрена лысого, не работает. Ещё и под впн 100 раз капчу заставили заполнять со светофорами и велосипедами. А фишка в том, что там обязательно нужно поставить юзернейм и пароль. Причем пароль не абы какой, я поставил 12345. В их ошибке об этом ни слова . И только тогда это дерьмо заработало

    • @Aurum-Boss
      @Aurum-Boss Před rokem

      Добавить текущий ip адрес не получается

    • @Aurum-Boss
      @Aurum-Boss Před rokem

      Как добавить всю подсеть подскажите пожалуйста.

    • @user-ev2fo1ky7u
      @user-ev2fo1ky7u Před rokem

      @@Aurum-Bossк сожалению, ютуб удаляет ссылки со скриншотами, там есть инпут (IP Address), вставляешь в него свой ip адрес, правее от него, станет активной кнопка Add Entry, нажимаешь и ip добавится к текущему списку ip адресов

    • @user-ev2fo1ky7u
      @user-ev2fo1ky7u Před rokem

      @@Aurum-Boss с подсетью та же история, идентично как и с ip адресом, вставляешь весь диапазон и добавляешь

  • @Crouch96wtf
    @Crouch96wtf Před rokem

    то огонь как круто что ты такое сделал без вообще каких либо проблем backend пушка

  • @sergeylitvinenko5275
    @sergeylitvinenko5275 Před 10 měsíci

    прекрасный курс, доступно понятно при этом большой объем хорошо структурированной информации предоставил автор

  • @polkovnik84
    @polkovnik84 Před 9 měsíci +9

    Если у кого-то была ошибка, при получении поста по ID, тогда вот исправления:
    let doc = await PostModel.findOneAndUpdate(
    { _id: postId },
    { $inc: { viewsCount: 1 } }
    );
    Потому как с версии mongodb v.5++ убрали возможность использовать callback функции в данном случае.

    • @umkament
      @umkament Před 9 měsíci +4

      да, только я еще оставила третий параметр {returnDocument: 'after'}, иначе при первом получении документа счетчик просмотров так и будет оставаться нулевым, а нам нужно, чтобы он сразу в единичку превратился

    • @evans4068
      @evans4068 Před 9 měsíci

      красавчики, парни. Выручили@@umkament

  • @7yon482
    @7yon482 Před 2 lety +31

    Думаю стоит уточнить, что есть довольно классная альтернатива Insomnia под названием Postman :)

    • @ihorsudenko864
      @ihorsudenko864 Před 2 lety +14

      А есть еще лучше подход, относительно недавно я перешел с postman на thunder client это расширение для vscode, очень легковесное и имеет все необходимое!

    • @user-co5pk5uv5w
      @user-co5pk5uv5w Před 2 lety +1

      @@ihorsudenko864 Благодарю за инфу) Рил годная вещь)

    • @alex-kobrin
      @alex-kobrin Před 2 lety +5

      Я тоже взял альтернативу Insomnia , ecть отличный модуль в VS code как Thunder Client

    • @itmodern2386
      @itmodern2386 Před 2 lety

      Мне как-то с insomnia удобнее)

    • @aleksandrholoven2412
      @aleksandrholoven2412 Před 2 lety

      @@ihorsudenko864 сенкс, удобный экстеншн

  • @user-kn3ut1sh2o
    @user-kn3ut1sh2o Před 2 lety

    Спасибо за ваш труд! (Полный Full Stack курс ReactJS + NodeJS)

  • @chertiav
    @chertiav Před rokem

    Благодарю за курс!!!!! Контент просто супер!!!!

  • @daniil7243
    @daniil7243 Před 2 lety +3

    Есть в планах курс по next js?

  • @andreybagulnikov5404
    @andreybagulnikov5404 Před 2 lety +9

    Спасибо за видео. Хотелось бы прояснить момент с валидацией, в первой части видео мы делаем валидацию на бэке, но не возвращаем ошибки на фронт для их отображения, вместо этого мы дополнительно делаем валидацию на фронте, в реальных проектах используешь такой же подход и на сколько он правильный?

    • @Dovmial
      @Dovmial Před rokem +1

      1. валидации могут отличаться. Более простые проверки на фронте, посложнее - на сервере.
      2. защита от дурака. кто-то может захотеть прикрутить к твоему бэку фронт, в котором не сделает валидацию.
      3. сервер не должен зависеть от представления.

  • @davinchi1804
    @davinchi1804 Před rokem

    Как всегда топ, и как всегда все ИДЕАЛЬНО РАБОТАЕТ!!!👍

  • @user-lk4kv5sw7s
    @user-lk4kv5sw7s Před 4 měsíci

    Спасибо большое за прекрасный курс!!! Осталось реализовать дополнительный функционал из домашнего задания

  • @wilkinsan4315
    @wilkinsan4315 Před 2 lety +11

    Привет! Я почти уже почти попал в iT (разработку), но блин жизненные планы не позволили сделать мечту. Именно твои уроки просты в восприятии и по ним я похоже буду учится чтобы всё таки сделать мечту реальностью.

    • @catsapp
      @catsapp Před 2 lety

      Че случилось?

    • @alexcerebrum5655
      @alexcerebrum5655 Před rokem

      блин заебись мечта гонять гонять | и 0 по эфиру)) это не мечта, а так, средство к существованию((

  • @risel1241
    @risel1241 Před 2 lety +10

    Курс бомба, единственное что, в описании нет исходника фронта без прикрученной логики, а только с версткой )

    • @ArchakovBlog
      @ArchakovBlog  Před 2 lety +15

      пофиксил. теперь в master только вёрстка, в finished финальная версия

    • @almira4833
      @almira4833 Před rokem

      @@ArchakovBlog Здравствуйте, где это можно найти?

  • @voplN2
    @voplN2 Před rokem

    Как всегда - на высоте!

  • @alexmoney4641
    @alexmoney4641 Před rokem +7

    У кого возникла ошибка DB error MongooseServerSelectionError: Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're trying to access the database from an IP that isn't whitelisted, Я смог решить проблему подключения к серверу на MongoDB, выполнив это изменение. Зашёл опять на сайт MongoDB и поменял настройки.
    Путь к настройкам: MongoDB Atlas -> NetworkAccess -> Edit -> Allowed Access from Anywhere

    • @user-lm9nr4eo2f
      @user-lm9nr4eo2f Před rokem

      Можно было просто свой ip локального компьютера, и ip облачного сервера добавить.

    • @fsvasi
      @fsvasi Před rokem +1

      Спасибо, помог с ошибкой

    • @maga_frank
      @maga_frank Před 11 měsíci +1

      спасибо помог

    • @SenkeSem
      @SenkeSem Před 10 měsíci

      Большое спасибо за помощь с решением. :)

    • @sernowodsk5963
      @sernowodsk5963 Před 4 měsíci

      @@user-lm9nr4eo2f если свой указать то каждый день у меня он обновляется и каждый день надо указывать свой айди новый, я новичок поэтому этот курс у меня растянулся на пару дней

  • @alik64
    @alik64 Před rokem +1

    Начинаю курс , let's go 🚀

  • @jsilverhead
    @jsilverhead Před rokem +1

    По-моему самый внятный и полезный курс по node
    eact что я видел! Keep it up!

  • @user-ti6og5so1w
    @user-ti6og5so1w Před rokem +4

    Парень с именем Ян:
    - А как зарегистрироваться?

  • @ilyaprotsenko1023
    @ilyaprotsenko1023 Před 2 lety +2

    Автор, спасибо большое за твой труд!

  • @aeron_rus
    @aeron_rus Před rokem

    Огромное спасибо за все курсы, ваш вклад в отечественное IT БЕЗГРАНИЧЕН!

  • @DzhavidR
    @DzhavidR Před 2 lety +3

    Ден, объясни пожалуйста, что делает строка .populate('user').exec()
    Непонятен момент именно с exec

    • @dennisritchie2709
      @dennisritchie2709 Před 2 lety +1

      Я практически не имел дело с технологиями из видоса и не смотрел сам видос, но, должно быть, речь идет о составлении запроса к базе данных. Если все так, то вызов .populate('user') - часть кода, который составляет запрос на стороне клиента (чтобы заполнить некоторую модель данных данными о пользователе), а вызов .exec() уже отправляет ранее составленный запрос к базе данных

    • @loreeltv
      @loreeltv Před 2 lety

      Насколько я понял, populate делает что-то на подобие join'a из SQL баз данных. То-есть, без этой функции в обьекте указан только _id пользователя, а с ней это ид превращается в обьект пользователя и информацию о нем, выбранную с помощью этого ид

    • @ayhanak8913
      @ayhanak8913 Před rokem +1

      у меня возникла ошибки не работал populate()

    • @vlaszubenko2610
      @vlaszubenko2610 Před 3 měsíci

      @@ayhanak8913 Решил проблему, выведи errors в логи в catch и увидишь проблему, у меня была проблема в том, что я в PostSchema там где user писал модель User а у меня она названа UserModel (ref: 'UserModel',)

  • @user-lm9nr4eo2f
    @user-lm9nr4eo2f Před rokem +3

    Если кому-то интересно, то потратив примерно пару часов, я узнал как эффективнее и быстрее всего убрать passwordHash. Как оказалось не надо итерироваться по массиву, или иных фиговых способов. Надо вторым аргументом в populate просто заминусовать это поле: .populate('user', '-passwordHash')

    • @user-ie7em2oi4m
      @user-ie7em2oi4m Před rokem +1

      Или туда же передать массив с нужными полями ['fullName', 'avatarUrl'] чтобы не плодить ненужные поля в ответе

    • @Mike37373
      @Mike37373 Před 10 měsíci

      зачем убирать

    • @user-lm9nr4eo2f
      @user-lm9nr4eo2f Před 10 měsíci

      Бро, уже не помню) @@Mike37373

    • @umkament
      @umkament Před 9 měsíci +1

      отлично, спасибо

    • @Mike37373
      @Mike37373 Před 9 měsíci

      зачем убирать@@umkament

  • @sergiohardov
    @sergiohardov Před 7 měsíci +6

    Автору спасибо за материал!)
    Для тех у кого ошибка на методе .findOneAndUpdate: "MongoDB удалила обратные вызовы из своего драйвера Node.js начиная с версии 5.0. findOne"
    по этому коллбек необходимо разбить на then для doc и catch для err
    PostModel.findOneAndUpdate(
    {
    _id: postId,
    },
    {
    $inc: { viewsCount: 1 },
    },
    {
    returnDocument: "after",
    }
    )
    .then((doc) => {
    if (!doc) {
    return res.status(404).json({
    message: "Article not found",
    });
    }
    res.json(doc);
    })
    .catch((err) => {
    if (err) {
    console.log(err);
    return res.status(500).json({
    message: "Error return article",
    });
    }
    });

  • @aleksandrbarabash2221

    Спасибо, пожалуй самый лучший курс из всех по этой теме.
    Единственное, что отталкивает то, что Вы систематически импорты вписываете вручную.

  • @ai-bloggers
    @ai-bloggers Před 2 lety

    Вот это я удачно зашёл. Спасибо огромное

  • @user-dx2zx5jt2s
    @user-dx2zx5jt2s Před rokem +3

    Спасибо автор за очень полезное видео!
    Подскажи пожалуйста что означает это предупрждение и что с ним делать: "
    (node:5760) [MONGOOSE] DeprecationWarning: Mongoose: the `strictQuery` option will be switched back to `false` by default in Mongoose 7. Use `mongoose.set('strictQuery', false);` if you want to prepare for this change. Or use `mongoose.set('strictQuery', true);` to suppress this warning.(Use `node --trace-deprecation ...` to show where the warning was created)
    "

    • @MidNightFuckka
      @MidNightFuckka Před rokem

      Тоже не знаю, но вроде и с этим все работает, если кто знает, помогите плиз

    • @user-em5gh4bz4x
      @user-em5gh4bz4x Před rokem +1

      @@MidNightFuckka mongoose.set('strictQuery', false); вот это добавь перед первым использование . в чем прикол не понял

    • @katerina6259
      @katerina6259 Před rokem

      @@user-em5gh4bz4x мне тоже такое решение помогло.

  • @JavaScriptcher
    @JavaScriptcher Před 2 lety +2

    Новая годнота подьехала!!!

  • @uniquelollipop4722
    @uniquelollipop4722 Před rokem

    Спасибо огромное за труды, все очень понятно и доходчиво

  • @SenkeSem
    @SenkeSem Před 10 měsíci +3

    Делал всё вместе с тобой. Правда это заняло часов 10 реального времени, а не 4, но всё шикарно получилось. Спасибо тебе большое, что делишься своим опытом с молодой гвардией пруграмистав. Удачи.

  • @sidby966
    @sidby966 Před 2 lety +3

    отличный курс. Но после деплоя на хероку и переходу по ссылке с запросом posts ошибка: Application error. Диплой на vercel естественно так же с ошибкой, не прогружает посты и постоянно выдает при запросе в нетворке: CORS error. Кто-то сталкивался с таким, пытаюсь сам вылечить , пока без результатно.

    • @merunus8556
      @merunus8556 Před 2 lety

      Та же проблема, если найдёте решение сообщите!

    • @merunus8556
      @merunus8556 Před 2 lety

      Решил проблему, автор не уточнил, что нужно добавить в .gitignore node modules, при деплое на хероку они ломают все, не благодари

    • @sidby966
      @sidby966 Před 2 lety

      @@merunus8556 спасибо, полностью заново перезаливал бекэнд на гитхаб а потом на хероку?

    • @sidby966
      @sidby966 Před 2 lety +1

      все отлично завелось. странно что при git init не создался по умолчанию файл с .gitignore

    • @yuramarinenkov8697
      @yuramarinenkov8697 Před rokem

      странно. git ignore залил в репозиторий и вроде бы на Heroku уже всё почистил и заново запустил. Но что-то всё-таки нет так...

  • @mex5341
    @mex5341 Před 2 lety +6

    начиная с фронтенда курс испортился . Почему нельзя было сделать все по порядку с версткой , созданием компонентов и т.д ? Вышло бы длиннее, но понятнее

    • @linarus6090
      @linarus6090 Před rokem +4

      согласен, для новичков понятнее, когда с нуля набираешь. А так на фронте полная хрень началась

    • @aleksprimetv
      @aleksprimetv Před rokem +2

      если ты новичок, то тебе рано вообще на фулстак зарится закатай губу и иди учи основы.

    • @mex5341
      @mex5341 Před rokem

      @@aleksprimetv лол)

    • @yuramarinenkov8697
      @yuramarinenkov8697 Před rokem

      @@aleksprimetv согласен

  • @arturfrimu4161
    @arturfrimu4161 Před 2 lety +1

    Ты лучший!!! Спасибо большое за твой труд!!!

  • @thewer5448
    @thewer5448 Před 4 měsíci

    Великолепно, спасибо большой за твой труд

  • @nagibbator4449
    @nagibbator4449 Před rokem +3

    mongo через какое то время перестает работать, пишет добавьте ваш айпи к списку разрешенных айпи, хотя там доступ для любого айпи стоит, ни кто не сталкивался с этим?

    • @fatale2ror55
      @fatale2ror55 Před rokem

      я просто свой текущий IP добавляю в network access

    • @nagibbator4449
      @nagibbator4449 Před rokem

      @@fatale2ror55 у меня перестает работать, приходится заново все делать

    • @fatale2ror55
      @fatale2ror55 Před rokem

      @@nagibbator4449 это если айпи поменялся или в процессе отключается?

  • @satyxa
    @satyxa Před rokem +3

    57:15 не объяснил почему _doc стало и ещё пару моментов для понимания не раскрыто, а так видос ахуенный

    • @iliyachepkin
      @iliyachepkin Před rokem +3

      Когда он возвращал только "...user", вернулся объект с большим количеством свойств внутри него. Если ты посмотришь на содержимое этого объекта ты увидишь что один из свойств это еще один объект под названием "_doc".
      Написав "...user._doc" он указал путь к свойству _doc (который является тоже объектом) внутри "...user"

    • @satyxa
      @satyxa Před rokem

      @@iliyachepkin ♥

  • @romangudev
    @romangudev Před 5 měsíci

    Большая и хорошая работа. Спасибо!

  • @Ramosok
    @Ramosok Před 2 lety +1

    Спасибо большое за твой труд!!!!

  • @pavelshnurov
    @pavelshnurov Před rokem +3

    Если у кого проблемы с получением статьи по id, надо понизить версию mongoose на 6.10.0

    • @N1K0_official
      @N1K0_official Před rokem

      где это подробно можно узнать, как понизить версию ?

    • @user-bq6me2xn4x
      @user-bq6me2xn4x Před rokem

      @@N1K0_official npm i mongoose 6.10.0

    • @user-oe1hf4lu3x
      @user-oe1hf4lu3x Před 11 měsíci +3

      вместо колбека (err, doc) =>{}, нужно теперь чейнить
      PostModel.findOneAndUpdate({
      // что-то делаем
      }).then((doc, err) => {
      // Некоторая логика
      }).catch((reject) => {
      // Пример: res.status(404).json({
      msg: 'Статья не найдена!'
      })
      })
      Для тех кто столкнется с проблемой

  • @DamirTD
    @DamirTD Před rokem

    Огромное спасибо за курс!

  • @3dzbot
    @3dzbot Před 2 lety +1

    Wow!! Спасибо огромное!! 🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥

  • @user-qw9uo4wo5p
    @user-qw9uo4wo5p Před 2 lety +1

    Благодарю!! Очень полезно!

  • @zam4764
    @zam4764 Před 2 lety +2

    Спасибо за курс!