а зачем он тебе ? какая задача ? автор придумал идею и и сделал этот курс, что в ноде рассказывать ? как файлы перемещать) Предложи что идею что именно ты хочешь что бы сделал автор, что бы показал что именно на ноде? И тем более после этого курса ты сможеш я думаю и сам погуглить что нужно или документацию почитать и курс по ноде есть у Владилена Минина как вариант.
Спасибо за шикарный курс. У кого сервак не конектится к облаку монгодб и в терминале срабатывает кэтч - перейдите на страницу вашего облака и найдите слева кнопку Network Access > разрешите доступ по любому IP (если у вас динамический ) либо можете указать конкретный (если у вас статический) и в обоих случаях вы используете только браузерный впн
@@АлександрЕрмолов-п2ь везде нули это и означает, что любой ip разрешен для подключения. проверьте строчку в серверном файле: mongoose.connect('.......') возможно у вас есть пароль, но в строке он не указан, либо его нет и в сроке это также некорректно отображено (в общем убедитесь что отсутствуют ошибки)
Блин, я начал делать это ради того чтобы научится верстать, в итоге дохожу я до второго часа гайда и автор такой А Я УЖЕ ВСЕ СВЕРСТАЛ ВЕРСТАТЬ НЕ ПРИДЕТСЯ Спасибо папаша 😂
Автору спасибо за материал!) Для тех у кого ошибка на методе .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", }); } });
1:37:58 нормально ты автор, конечно, потролил. То-есть любой кто сделает get запрос может получить всю инфу из БД про всех авторов статей, включая email, хеши паролей, дату регистрации, короче тупо всю инфу. Понятно что курс для новичков, но это через чур. Как по твоему новичок найдет инфу как пофиксить это? Короче, немного посидев, нашел такое решение как передать туда только то что нужно (P.S. Не пойму почему так трудно было написать одну строчку автору) .populate({ path: "user", select: ["name", "avatar"] })
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: "Статья не найдена" }))
Это очень круто! То что нужно тем, кто посмотрел про теорию, но не знает как сделать что-то рабочее. Все очень понятно. Отдельное спасибо, что показал от начала и до деплоя, мало кто это делает, очень ценный курс.
по поводу cloud.mongodb - для тех у кого динамичный ip и/или сменяются подсети, то будет нежданчик ввиду ошибки подключения к базе данных, решается это дело в разделе Security -> Quickstart, нужно добавить текущий ip или всю подсеть
Нету там Security > Quickstart. Я рот топтал эту mongodb, два дня шатал их базу данных и она всё падала с ошибкой. Четыре раза удалял и создавал новый проект и новую бд - ни фига. Поставил в разрешенных IP все нули и свой ипшник- хрена лысого, не работает. Ещё и под впн 100 раз капчу заставили заполнять со светофорами и велосипедами. А фишка в том, что там обязательно нужно поставить юзернейм и пароль. Причем пароль не абы какой, я поставил 12345. В их ошибке об этом ни слова . И только тогда это дерьмо заработало
@@Aurum-Bossк сожалению, ютуб удаляет ссылки со скриншотами, там есть инпут (IP Address), вставляешь в него свой ip адрес, правее от него, станет активной кнопка Add Entry, нажимаешь и ip добавится к текущему списку ip адресов
А есть еще лучше подход, относительно недавно я перешел с postman на thunder client это расширение для vscode, очень легковесное и имеет все необходимое!
Ещё не закончил React Pizza 2.0, но заранее предвкушаю процесс прохождения данного курса, потому что знаю, что контент будет топовый - максимально понятный и информативный! Спасибо🙏 #MongoDB #Express #React #NodeJS #MERN
Если у кого-то была ошибка, при получении поста по ID, тогда вот исправления: let doc = await PostModel.findOneAndUpdate( { _id: postId }, { $inc: { viewsCount: 1 } } ); Потому как с версии mongodb v.5++ убрали возможность использовать callback функции в данном случае.
да, только я еще оставила третий параметр {returnDocument: 'after'}, иначе при первом получении документа счетчик просмотров так и будет оставаться нулевым, а нам нужно, чтобы он сразу в единичку превратился
Обычно избегаю оставлять комментарии, чтобы не отвлекаться от прогресса, но Денис, спасибо тебе огромное, что так подробно объясняешь. Я думаю, для многих из СНГ, IT - это хорошая возможность подняться и изменить жизнь к лучшему, так что, как говорится: you are doing God's work
Я очень долгое время пытался понять и начать писать код на raect, но всегда в голове была какая то каша из большого количества информации. Я полюбил твои курсы за то, что у тебя каждый курс сделан очень подробно, структурировано и понятно. С нетерпением жду новые курсы! Большое тебе спасибо за твой труд и удачи во всем!
Автор, спасибо за видео !!! Круто ! 47:15 - если быть совсем точным, бкрипт - это алгоритм формирования пароля, а соль - это не алгоритм, это как и пароль обычная строка, набор символов (буквы, цифры, знаки), которые добавляются к паролю для того, чтоб хранящиеся в базе 10 одинаковых паролей не имели одинаковый хэш.
Делал всё вместе с тобой. Правда это заняло часов 10 реального времени, а не 4, но всё шикарно получилось. Спасибо тебе большое, что делишься своим опытом с молодой гвардией пруграмистав. Удачи.
спасибо за проделанную работу! у тебя приятный голос и несмотря на монотонность, интересно слушать, курс не выглядит душным. Нравится, что не торопишься, как некоторые авторы обучающего контента(в попытках впихнуть невпихуемое, е-мае:D), благодаря этому возможно досмотреть 4,5 ч.
Товарищи, кто столкнулся с проблемой при подключении Mongo DB Compass, тобишь , проблема заключается в том что при создании аккаунта на сайте Mongo мы заходим с VPN и сайт вносит наш IP в белый лист который используется через VPN, при подключении к Compass идет авторизация через основной IP , именно поэтому возникает проблема, чтобы её решить на сайте потребуется войти в Network Access и указать IP адрес через который будет происходить авторизация через приложение , единственная проблема будет у людей с динамическим IP в том что его каждый раз понадобится менять, по крайней мере мне и паре человек это помогло.
у меня такая проблема была, я короче с выключенным впн определил свой IP, скопировал и в ручную на сайте MongoDB добавил свой вместо того что там было, как я понял там он не твой ip втавляет. Слева раздел Network access там поменяй
Наконец-то добрался до бекенда. MVC, JWT, CRUD - теперь эти термины уже не кажутся чем-то понятным только из документаций :) И фронтенд, когда есть знание бекенда становится еще более понятен. Крутой курс.
А какие методы HTTP лучше использовать для аутентификации с помощью JSON Web Token? я сам долго выбирал курсы по IT, рассматривал разные компании, но в итоге остановился на Skypro, так как у них были лучшие отзывы и структурированные материалы)
Привет! Я почти уже почти попал в iT (разработку), но блин жизненные планы не позволили сделать мечту. Именно твои уроки просты в восприятии и по ним я похоже буду учится чтобы всё таки сделать мечту реальностью.
Спасибо за курс. Сначала с ужасом смотрел на домашнюю работу, но затем шаг за шагом и все получилось. Главное практика и обучение на собственных ошибках. Еще раз спасибо!! Ждем новых курсов!! Удачи!!
В функцию удаления изображения при создании и обновлении статьи необходимо добавить очищение inputFileRef, иначе если вы добавите изображение в форму, а затем захотите его удалить и добавить другое, то этого у вас не получится, придется перезагружать страницу. что приведет к потере уже введенных в форму данных. Чтобы этого избежать добавляем строчку очищения inputFileRef, и теперь можно сколько угодно добавлять удалять изображения без перезагрузки страницы. const onClickRemoveImage = () => { setImageUrl(''); inputFileRef.current.value = ''; };
у кого ошибка на моменте с getonebyid(no longer support callback) используйте async/await вот пример const doc = await PostModel.findByIdAndUpdate( { _id: postId }, { $inc: { viewsCount: 1 } }, { returnDocument: 'after' }, )
if (!doc) { return res.status(404).json({ message: 'не удалось найти статью' })
Дэннис, ты просто лучший! Когда смотрю твои видео, чувствую магию! Ни у кого так понятно не объяснено, +спасибо за реакт-пиццу обновлённый, там просто идеальнейшее объяснение. Сейчас делаю тестовые задания на работу, опираясь на твои уроки! Спасибо за твой труд!
Если кому-то интересно, то потратив примерно пару часов, я узнал как эффективнее и быстрее всего убрать passwordHash. Как оказалось не надо итерироваться по массиву, или иных фиговых способов. Надо вторым аргументом в populate просто заминусовать это поле: .populate('user', '-passwordHash')
У кого возникла ошибка 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
@@АлександрВидин-с6я если свой указать то каждый день у меня он обновляется и каждый день надо указывать свой айди новый, я новичок поэтому этот курс у меня растянулся на пару дней
Шикарный курс, большое спасибо, познакомила с бэкендом! Удивительно было что написание бэка заняло меньше времени чем фронт, полагаю это благодаря простоте работы с express
Спасибо за видео. Хотелось бы прояснить момент с валидацией, в первой части видео мы делаем валидацию на бэке, но не возвращаем ошибки на фронт для их отображения, вместо этого мы дополнительно делаем валидацию на фронте, в реальных проектах используешь такой же подход и на сколько он правильный?
1. валидации могут отличаться. Более простые проверки на фронте, посложнее - на сервере. 2. защита от дурака. кто-то может захотеть прикрутить к твоему бэку фронт, в котором не сделает валидацию. 3. сервер не должен зависеть от представления.
То чувство, когда досмотрел 4-часовой курс и все проделывал вместе с автором. Спасибище огромное! 2 вопроса к тебе. Работал ли с php и правда ли хочешь бросить разработку? Частично слушал стрим, где ты на это намекаешь, но в то же время увидел план по трудоустройству в новую компанию в твоём блоге. Спасибо.
начиная с фронтенда курс испортился . Почему нельзя было сделать все по порядку с версткой , созданием компонентов и т.д ? Вышло бы длиннее, но понятнее
вместо колбека (err, doc) =>{}, нужно теперь чейнить PostModel.findOneAndUpdate({ // что-то делаем }).then((doc, err) => { // Некоторая логика }).catch((reject) => { // Пример: res.status(404).json({ msg: 'Статья не найдена!' }) }) Для тех кто столкнется с проблемой
отличный курс. Но после деплоя на хероку и переходу по ссылке с запросом posts ошибка: Application error. Диплой на vercel естественно так же с ошибкой, не прогружает посты и постоянно выдает при запросе в нетворке: CORS error. Кто-то сталкивался с таким, пытаюсь сам вылечить , пока без результатно.
Я практически не имел дело с технологиями из видоса и не смотрел сам видос, но, должно быть, речь идет о составлении запроса к базе данных. Если все так, то вызов .populate('user') - часть кода, который составляет запрос на стороне клиента (чтобы заполнить некоторую модель данных данными о пользователе), а вызов .exec() уже отправляет ранее составленный запрос к базе данных
Насколько я понял, populate делает что-то на подобие join'a из SQL баз данных. То-есть, без этой функции в обьекте указан только _id пользователя, а с ней это ид превращается в обьект пользователя и информацию о нем, выбранную с помощью этого ид
@@ayhanak8913 Решил проблему, выведи errors в логи в catch и увидишь проблему, у меня была проблема в том, что я в PostSchema там где user писал модель User а у меня она названа UserModel (ref: 'UserModel',)
Супер видос! Так держать, более понятного разъяснения всего и вся нигде не встречал. Очень хотелось бы в будущем видео по созданию CRM системы простенькой
mongo через какое то время перестает работать, пишет добавьте ваш айпи к списку разрешенных айпи, хотя там доступ для любого айпи стоит, ни кто не сталкивался с этим?
Спасибо автор за очень полезное видео! Подскажи пожалуйста что означает это предупрждение и что с ним делать: " (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) "
Ребят у кого проблема с mongoDb даже используя VPN, дело в том что почту для регистрации используем из России. Если с включеным VPN другой страны в google сделать новую почту, тогда проблема будет решена!
Пж сделайте полный курс по node и experss, народ поддержите лайком !!!
а зачем он тебе ? какая задача ? автор придумал идею и и сделал этот курс, что в ноде рассказывать ? как файлы перемещать) Предложи что идею что именно ты хочешь что бы сделал автор, что бы показал что именно на ноде?
И тем более после этого курса ты сможеш я думаю и сам погуглить что нужно или документацию почитать и курс по ноде есть у Владилена Минина как вариант.
@@maxim.saharov я имел ввиду что было бы хорошо если он сделал курс по node для джунов где он будет реализовать интернет магазин
@@yakub8798 думаю такое он должен только платно вылаживать на юдеми, потому что это мега колоссальный труд!
@@maxim.saharov да ты прав !
@@maxim.saharov но это может помочь с ростом аудитории так как по node таких курсов нет , в ру сегменте !
Спасибо за шикарный курс. У кого сервак не конектится к облаку монгодб и в терминале срабатывает кэтч - перейдите на страницу вашего облака и найдите слева кнопку Network Access > разрешите доступ по любому IP (если у вас динамический ) либо можете указать конкретный (если у вас статический) и в обоих случаях вы используете только браузерный впн
все равно не помогает... везде встали нули, но не работает )))
@@АлександрЕрмолов-п2ь везде нули это и означает, что любой ip разрешен для подключения.
проверьте строчку в серверном файле: mongoose.connect('.......') возможно у вас есть пароль, но в строке он не указан, либо его нет и в сроке это также некорректно отображено (в общем убедитесь что отсутствуют ошибки)
спасибо, помогло)
Мне помогло изменение версии при коннекте с Node 4.1 or later на 2.2.12 or later
Огромное спасибо. Помогло
Блин, я начал делать это ради того чтобы научится верстать, в итоге дохожу я до второго часа гайда и автор такой
А Я УЖЕ ВСЕ СВЕРСТАЛ
ВЕРСТАТЬ НЕ ПРИДЕТСЯ
Спасибо папаша 😂
Чувствую что это будет мегаохренительный курс. Спасибо за всё!
И твои чувства тебя не подводят 😎
Брат, и мои тоже наверно
как успехи
Кто хочет научиться писать микросервисы nodejs, docker - заходим в гости!🤝
досмотрел до конца нужно хотя бы ради каждого "да ёмаё".
хороший курс, хоть и не идеальный. рекомендую.
Автору спасибо за материал!)
Для тех у кого ошибка на методе .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",
});
}
});
Спасибо тебе
❤
1:37:58 нормально ты автор, конечно, потролил. То-есть любой кто сделает get запрос может получить всю инфу из БД про всех авторов статей, включая email, хеши паролей, дату регистрации, короче тупо всю инфу. Понятно что курс для новичков, но это через чур. Как по твоему новичок найдет инфу как пофиксить это? Короче, немного посидев, нашел такое решение как передать туда только то что нужно (P.S. Не пойму почему так трудно было написать одну строчку автору) .populate({ path: "user", select: ["name", "avatar"] })
Спасибо!
Поднимите этот коммент в топ, хоть курс и для новичков, но это наоборот важно подчеркнуть!
Вряд ли это троллинг. Авторы тоже могут ошибаться или не заметить ошибки
почему то у меня тоже не работал Editable={userData?.id === obj.user._id}
TypeError: Cannot read properties of null (reading '_id')
@@serjmarkelov9915 я тоже сагласен
А у меня почемуто не работал((
Черт, как же ты хорошо объясняешь, столько инфы новой и все идеально понял, спасибо друг 🙌
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: "Статья не найдена" }))
спасибо, выручили!
надо понизить версию mongoose на 6.10.0
спасибо
спасибо большое!!Добрый вы человек)) и очень многим думаю помогли
Огромная благодарность!
Собрал проект + прикрутил коменты за 20 часов где то. Спасибо за отличное видео и новые полезные знания.
Тебе огромное уважение и респект за твои труды💗 Продолжай в том же духе и повышай планку )
Спасибо большое за твой труд!!! Ты лучший!!! Офигенный курс и стэк!!!
Это очень круто! То что нужно тем, кто посмотрел про теорию, но не знает как сделать что-то рабочее. Все очень понятно. Отдельное спасибо, что показал от начала и до деплоя, мало кто это делает, очень ценный курс.
единственный канал который я нашел так четко и ясно объясняет автор ! спасибо за тяжёлый труд! я подписался сразу же 😎
по поводу cloud.mongodb - для тех у кого динамичный ip и/или сменяются подсети, то будет нежданчик ввиду ошибки подключения к базе данных, решается это дело в разделе Security -> Quickstart, нужно добавить текущий ip или всю подсеть
Нету там Security > Quickstart. Я рот топтал эту mongodb, два дня шатал их базу данных и она всё падала с ошибкой. Четыре раза удалял и создавал новый проект и новую бд - ни фига. Поставил в разрешенных IP все нули и свой ипшник- хрена лысого, не работает. Ещё и под впн 100 раз капчу заставили заполнять со светофорами и велосипедами. А фишка в том, что там обязательно нужно поставить юзернейм и пароль. Причем пароль не абы какой, я поставил 12345. В их ошибке об этом ни слова . И только тогда это дерьмо заработало
Добавить текущий ip адрес не получается
Как добавить всю подсеть подскажите пожалуйста.
@@Aurum-Bossк сожалению, ютуб удаляет ссылки со скриншотами, там есть инпут (IP Address), вставляешь в него свой ip адрес, правее от него, станет активной кнопка Add Entry, нажимаешь и ip добавится к текущему списку ip адресов
@@Aurum-Boss с подсетью та же история, идентично как и с ip адресом, вставляешь весь диапазон и добавляешь
Думаю стоит уточнить, что есть довольно классная альтернатива Insomnia под названием Postman :)
А есть еще лучше подход, относительно недавно я перешел с postman на thunder client это расширение для vscode, очень легковесное и имеет все необходимое!
@@ihorsudenko864 Благодарю за инфу) Рил годная вещь)
Я тоже взял альтернативу Insomnia , ecть отличный модуль в VS code как Thunder Client
Мне как-то с insomnia удобнее)
@@ihorsudenko864 сенкс, удобный экстеншн
Ещё не закончил React Pizza 2.0, но заранее предвкушаю процесс прохождения данного курса, потому что знаю, что контент будет топовый - максимально понятный и информативный!
Спасибо🙏
#MongoDB #Express #React #NodeJS #MERN
закончил ?
?
Если у кого-то была ошибка, при получении поста по ID, тогда вот исправления:
let doc = await PostModel.findOneAndUpdate(
{ _id: postId },
{ $inc: { viewsCount: 1 } }
);
Потому как с версии mongodb v.5++ убрали возможность использовать callback функции в данном случае.
да, только я еще оставила третий параметр {returnDocument: 'after'}, иначе при первом получении документа счетчик просмотров так и будет оставаться нулевым, а нам нужно, чтобы он сразу в единичку превратился
красавчики, парни. Выручили@@umkament
Обычно избегаю оставлять комментарии, чтобы не отвлекаться от прогресса, но Денис, спасибо тебе огромное, что так подробно объясняешь.
Я думаю, для многих из СНГ, IT - это хорошая возможность подняться и изменить жизнь к лучшему, так что, как говорится: you are doing God's work
Я очень долгое время пытался понять и начать писать код на raect, но всегда в голове была какая то каша из большого количества информации. Я полюбил твои курсы за то, что у тебя каждый курс сделан очень подробно, структурировано и понятно. С нетерпением жду новые курсы! Большое тебе спасибо за твой труд и удачи во всем!
raect)
@@nursbakytbek7599 у него ж каша в голове, сам сказал))))
Как успехи
@@ДанилДмитриев-я5м а как у тебя? :)
Огонь. Решил подучить бэкенд дополнением к фронту, чтобы можно было создавать полноценные сайты и твоё видео чётко в тему. Спасибо большое
Это лучший данного рода курс на ютубе, правда.
Спасибо за Ваши труды! 🙂
просмотрел до 5 минуты не удержался поставил лайк бомбим дальше
Пожалуй самый лучший курс из всех по этой теме. Всё очень доступно. Нет к чему придраться. Большое спасибо. Буду следить за новыми выпусками.
Зашел чекнуть как на Heroku и vercel заливка происходит, а тут походу нужно весь видос посмотреть, ведь контент топчик!
Автор, спасибо за видео !!! Круто !
47:15 - если быть совсем точным, бкрипт - это алгоритм формирования пароля, а соль - это не алгоритм, это как и пароль обычная строка, набор символов (буквы, цифры, знаки), которые добавляются к паролю для того, чтоб хранящиеся в базе 10 одинаковых паролей не имели одинаковый хэш.
Соль-в прямом смысле добавляет незначашие символы, подмешиваем соль.
Но есть алгоритм добавляющий соль,
@@maxburner8338 Да.
А почему 47:50 при const salt = await bcrypt.genSalt(10) await-выдает ошибку
TypeScript + Express было бы супер! Спасибо за работу
очень приятно и легко смотрятся ваши видео, спасибо
Делал всё вместе с тобой. Правда это заняло часов 10 реального времени, а не 4, но всё шикарно получилось. Спасибо тебе большое, что делишься своим опытом с молодой гвардией пруграмистав. Удачи.
спасибо за проделанную работу!
у тебя приятный голос и несмотря на монотонность, интересно слушать, курс не выглядит душным. Нравится, что не торопишься, как некоторые авторы обучающего контента(в попытках впихнуть невпихуемое, е-мае:D), благодаря этому возможно досмотреть 4,5 ч.
ты досмотрел видео все корректно работает, переживаю актуально ли на 2024 и не будет ли ошибок?
Такой контент и за бесплатно, спасибо большое, много полезного можно узнать) 🔥
Товарищи, кто столкнулся с проблемой при подключении Mongo DB Compass, тобишь , проблема заключается в том что при создании аккаунта на сайте Mongo мы заходим с VPN и сайт вносит наш IP в белый лист который используется через VPN, при подключении к Compass идет авторизация через основной IP , именно поэтому возникает проблема, чтобы её решить на сайте потребуется войти в Network Access и указать IP адрес через который будет происходить авторизация через приложение , единственная проблема будет у людей с динамическим IP в том что его каждый раз понадобится менять, по крайней мере мне и паре человек это помогло.
у меня такая проблема была, я короче с выключенным впн определил свой IP, скопировал и в ручную на сайте MongoDB добавил свой вместо того что там было, как я понял там он не твой ip втавляет. Слева раздел Network access там поменяй
@@triumphant5912 я как раз о решении этой проблемы и написал)
@@SuperKiberG Просто хотел показать, что я умный))
помогло! не смотря на то, что я из другой страны и не использую VPN, тоже не работало
Наконец-то добрался до бекенда. MVC, JWT, CRUD - теперь эти термины уже не кажутся чем-то понятным только из документаций :) И фронтенд, когда есть знание бекенда становится еще более понятен. Крутой курс.
Как успехи
Братан, хорош! Контент в кайф! Можно еще? Вообще красавчик!!
Долго я искал такое видео! Спасибо за ваш труд! Классно 👍
спасибо за курс!!! MongoDB, Express, React, NodeJS
Можешь показать свой код в postController на remove?
@@killu4375 выглядит не очень, но работает
2:17:22 Гениальное объяснение
Нет слов передать благодарности! Я делаю похожий проект но с firestore - вот теперь буду делать полный fullstack!
А какие методы HTTP лучше использовать для аутентификации с помощью JSON Web Token? я сам долго выбирал курсы по IT, рассматривал разные компании, но в итоге остановился на Skypro, так как у них были лучшие отзывы и структурированные материалы)
Уважаемый Skypro, не надоел ещё такой дешёвый пиар с накрученными лайками под каждым роликом?
Арчаков - Невский от мира it. "Утак уот"! (с) 😂
А если серьёзно, то спасибо за ролик! Это просто бомба! =)
Привет! Я почти уже почти попал в iT (разработку), но блин жизненные планы не позволили сделать мечту. Именно твои уроки просты в восприятии и по ним я похоже буду учится чтобы всё таки сделать мечту реальностью.
блин заебись мечта гонять гонять | и 0 по эфиру)) это не мечта, а так, средство к существованию((
Спасибо за курс. Сначала с ужасом смотрел на домашнюю работу, но затем шаг за шагом и все получилось. Главное практика и обучение на собственных ошибках. Еще раз спасибо!! Ждем новых курсов!! Удачи!!
Спасибо тебе за твои курсы!) Твой вклад в развитие русскоязычного айти сложно переоценить
В функцию удаления изображения при создании и обновлении статьи необходимо добавить очищение inputFileRef, иначе если вы добавите изображение в форму, а затем захотите его удалить и добавить другое, то этого у вас не получится, придется перезагружать страницу. что приведет к потере уже введенных в форму данных. Чтобы этого избежать добавляем строчку очищения inputFileRef, и теперь можно сколько угодно добавлять удалять изображения без перезагрузки страницы.
const onClickRemoveImage = () => {
setImageUrl('');
inputFileRef.current.value = '';
};
Жаль что Хероку сдулся 🤷
Можно было бы попробовать 👍
В любом случае - автору видео - пожелания Добра и Благополучия!
Очень интересно смотреть 👍
Шикарный курс, большое спасибо )
Отличный материал и очень доходчиво! респект!
кто впорется, как я в ошибку "монгус не поддерживает колбэк" гляньте доку.
у кого ошибка на моменте с getonebyid(no longer support callback) используйте async/await
вот пример
const doc = await PostModel.findByIdAndUpdate(
{ _id: postId }, { $inc: { viewsCount: 1 } }, { returnDocument: 'after' },
)
if (!doc) {
return res.status(404).json({
message: 'не удалось найти статью'
})
да, на stack overflow тоже так советут, спасибо, бро
ya prosta skachat versiyu mongoose@6,10,0
можно еще промисом:
PostModel.findOneAndUpdate(
{
_id: postId,
},
{
$inc: { viewsCount: 1 },
},
{
returnDocument: "after",
}
).then((doc, err) => {
if (err) {
console.log(err);
return res.status(500).json({
message: "Can't get article.",
});
}
if (!doc) {
return res.status(404).json({
message: "Article not found.",
});
}
res.json(doc);
});
тоже так пытался но не выходит 500 ошибку получить, поэтому ее обернул в .catch после .then
Спасибо за контент!
Как всегда топ 💪🏻
Спасибо, шикарно объясняешь, классный курс!
Это макимально крутое видео) Спасибо!
Респект таким людям которые вкладывают душу в свои видео
Тип с именем Ян столкнулся с ошибкой: имя долдно содержать минимум 3 символа
Мега полезное видео, наконец то смог подружить фронт и бэк)))
Курс бомба, единственное что, в описании нет исходника фронта без прикрученной логики, а только с версткой )
пофиксил. теперь в master только вёрстка, в finished финальная версия
@@ArchakovBlog Здравствуйте, где это можно найти?
Дэннис, ты просто лучший! Когда смотрю твои видео, чувствую магию! Ни у кого так понятно не объяснено, +спасибо за реакт-пиццу обновлённый, там просто идеальнейшее объяснение. Сейчас делаю тестовые задания на работу, опираясь на твои уроки! Спасибо за твой труд!
Привет!У тебя MongoDB без проблем подключилось? У меня выбивает ошибку "Could not connect to any servers in your MongoDB Atlas cluster."
@@КостяКипр без проблем подключилось. попробуй сделать это MongoDB Atlas -> NetworkAccess -> Edit -> Allow Any или почитай еще что-то на stackoverflow
Если кому-то интересно, то потратив примерно пару часов, я узнал как эффективнее и быстрее всего убрать passwordHash. Как оказалось не надо итерироваться по массиву, или иных фиговых способов. Надо вторым аргументом в populate просто заминусовать это поле: .populate('user', '-passwordHash')
Или туда же передать массив с нужными полями ['fullName', 'avatarUrl'] чтобы не плодить ненужные поля в ответе
зачем убирать
Бро, уже не помню) @@Mike37373
отлично, спасибо
зачем убирать@@umkament
Лучший, спасибо за туториал по подключению к базе данных
У кого возникла ошибка 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
Можно было просто свой ip локального компьютера, и ip облачного сервера добавить.
Спасибо, помог с ошибкой
спасибо помог
Большое спасибо за помощь с решением. :)
@@АлександрВидин-с6я если свой указать то каждый день у меня он обновляется и каждый день надо указывать свой айди новый, я новичок поэтому этот курс у меня растянулся на пару дней
Шикарный курс, большое спасибо, познакомила с бэкендом! Удивительно было что написание бэка заняло меньше времени чем фронт, полагаю это благодаря простоте работы с express
какой впн ты использовал для монгодб? Я сейчас сижу и не могу зарегаться
я разные впн использовал, но толку 0. Все никак не могу зайти и использовать его
@@exe611 у меня оплаченный openVpn от компании
Предвкушаю, что будет что-то интересное)) лайк уже поставил!))
Спасибо за видео. Хотелось бы прояснить момент с валидацией, в первой части видео мы делаем валидацию на бэке, но не возвращаем ошибки на фронт для их отображения, вместо этого мы дополнительно делаем валидацию на фронте, в реальных проектах используешь такой же подход и на сколько он правильный?
1. валидации могут отличаться. Более простые проверки на фронте, посложнее - на сервере.
2. защита от дурака. кто-то может захотеть прикрутить к твоему бэку фронт, в котором не сделает валидацию.
3. сервер не должен зависеть от представления.
Спасибо большое за прекрасный курс!!! Осталось реализовать дополнительный функционал из домашнего задания
То чувство, когда досмотрел 4-часовой курс и все проделывал вместе с автором. Спасибище огромное! 2 вопроса к тебе. Работал ли с php и правда ли хочешь бросить разработку? Частично слушал стрим, где ты на это намекаешь, но в то же время увидел план по трудоустройству в новую компанию в твоём блоге. Спасибо.
Начинаю курс , let's go 🚀
Парень с именем Ян:
- А как зарегистрироваться?
придется стать Яной
Большое спасибо! Подчеркнул для себя пару фишек!
Подача - моё почтение! Лучший в РУ-сегменте. Перешёл сюда сразу после реакт-пиццы
начиная с фронтенда курс испортился . Почему нельзя было сделать все по порядку с версткой , созданием компонентов и т.д ? Вышло бы длиннее, но понятнее
согласен, для новичков понятнее, когда с нуля набираешь. А так на фронте полная хрень началась
если ты новичок, то тебе рано вообще на фулстак зарится закатай губу и иди учи основы.
@@aleksprimetv лол)
@@aleksprimetv согласен
Дэн ты нас балуешь)) Спасибо тебе большое!
Если у кого проблемы с получением статьи по id, надо понизить версию mongoose на 6.10.0
где это подробно можно узнать, как понизить версию ?
@@N1K0_official npm i mongoose 6.10.0
вместо колбека (err, doc) =>{}, нужно теперь чейнить
PostModel.findOneAndUpdate({
// что-то делаем
}).then((doc, err) => {
// Некоторая логика
}).catch((reject) => {
// Пример: res.status(404).json({
msg: 'Статья не найдена!'
})
})
Для тех кто столкнется с проблемой
2:17:22 спасибо за объяснение
Крутое видеоя спасибо, очень информативно 🤘 #mongoDB, #express, #nodeJS,#frontend, #backend,#react
то огонь как круто что ты такое сделал без вообще каких либо проблем backend пушка
отличный курс. Но после деплоя на хероку и переходу по ссылке с запросом posts ошибка: Application error. Диплой на vercel естественно так же с ошибкой, не прогружает посты и постоянно выдает при запросе в нетворке: CORS error. Кто-то сталкивался с таким, пытаюсь сам вылечить , пока без результатно.
Та же проблема, если найдёте решение сообщите!
Решил проблему, автор не уточнил, что нужно добавить в .gitignore node modules, при деплое на хероку они ломают все, не благодари
@@merunus8556 спасибо, полностью заново перезаливал бекэнд на гитхаб а потом на хероку?
все отлично завелось. странно что при git init не создался по умолчанию файл с .gitignore
странно. git ignore залил в репозиторий и вроде бы на Heroku уже всё почистил и заново запустил. Но что-то всё-таки нет так...
ТОповый курс спасисбо Арчаков
Снова вернулся на твой канал , мне предстаит много наверстать, Спасибо за твою работу !
Ден, объясни пожалуйста, что делает строка .populate('user').exec()
Непонятен момент именно с exec
Я практически не имел дело с технологиями из видоса и не смотрел сам видос, но, должно быть, речь идет о составлении запроса к базе данных. Если все так, то вызов .populate('user') - часть кода, который составляет запрос на стороне клиента (чтобы заполнить некоторую модель данных данными о пользователе), а вызов .exec() уже отправляет ранее составленный запрос к базе данных
Насколько я понял, populate делает что-то на подобие join'a из SQL баз данных. То-есть, без этой функции в обьекте указан только _id пользователя, а с ней это ид превращается в обьект пользователя и информацию о нем, выбранную с помощью этого ид
у меня возникла ошибки не работал populate()
@@ayhanak8913 Решил проблему, выведи errors в логи в catch и увидишь проблему, у меня была проблема в том, что я в PostSchema там где user писал модель User а у меня она названа UserModel (ref: 'UserModel',)
Мега охренительное СПАСИБО!
Супер видос! Так держать, более понятного разъяснения всего и вся нигде не встречал.
Очень хотелось бы в будущем видео по созданию CRM системы простенькой
mongo через какое то время перестает работать, пишет добавьте ваш айпи к списку разрешенных айпи, хотя там доступ для любого айпи стоит, ни кто не сталкивался с этим?
я просто свой текущий IP добавляю в network access
@@fatale2ror55 у меня перестает работать, приходится заново все делать
@@nagibbator4449 это если айпи поменялся или в процессе отключается?
По-моему самый внятный и полезный курс по node
eact что я видел! Keep it up!
Спасибо автор за очень полезное видео!
Подскажи пожалуйста что означает это предупрждение и что с ним делать: "
(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 mongoose.set('strictQuery', false); вот это добавь перед первым использование . в чем прикол не понял
@@длякурсов-р4к мне тоже такое решение помогло.
Спасибо большое, что-то понятно, а что-то нет. Вы очень выручили, я уже неделю смотрю, а смог пройти только 1ч, спасибо!
круто-круто, но было бы еще круче через некоторое время записать видео как правильно сделать дз)))
реально крутой ролик получился, видно что заморочился, респект
Давно хотел понять принцып работы и как там всё устроенно на бэке! Погнали! Пожелайте мне удачи!))
Огромное спасибо за все курсы, ваш вклад в отечественное IT БЕЗГРАНИЧЕН!
Спасибо за твой тяжкий труд!
Хероку стал платным. Проделал все то же самое и задеплоил бэк на Render. Спасибо за видео!
Новая годнота подьехала!!!
Это самое человеко-понятное объяснение, простым языком как для детей. Все четко и последовательно. Спасибо тебе автор большое, все очень круто.
чотко! лайк от кодера-гуру СЕООНЛИ!
Ребят у кого проблема с mongoDb даже используя VPN, дело в том что почту для регистрации используем из России. Если с включеным VPN другой страны в google сделать новую почту, тогда проблема будет решена!
Огромное спасибо за совет!
прекрасный курс, доступно понятно при этом большой объем хорошо структурированной информации предоставил автор
Спасибо Арчаковский, это был мегаохренительный контент
Не могу не оставить коммент, за продвижение канала!
Отлично, как раз сейчас прохожу в ЯндексПрактикуме тему по бэкУ)
яндекс - это помойка
Как, успехи
Автор, спасибо большое за твой труд!
Неожиданно, курс появился, Хотел бы и я записать в таком качестве курс. Спасибо за труд!