No video

Nodejs y Mongodb Aplicación completa (Login, Registro,CRUD, ES6+, y más)

  Рет қаралды 673,751

Fazt

Fazt

Күн бұрын

Aprende a crear una aplicación web Backend y Frontend, utilizando Nodejs, Mongodb, Express y otras tecnologías de Javascript. En este ejemplo crearemos una aplicacion de Notas, que sera un CRUD de nodejs, más un Login y Registro utilizando Mongodb, ademas de proteger nuestras rutas del servidor y estilizar nuestra aplicación con CSS y Bootstrap4.
INDICE DEL TUTORIAL
1. Backend: 04:47
2. Views (Template Engine): 41:24
3. CRUD: 59:13
4. Register/SingUp: 02:03:30
5. Login / SignIn: 02:30:27
6. Navigation: 02:51:54
7. Personal Data for Users: 03:12:40
CÓDIGO FINAL:
github.com/Faz...
CURSO DE JAVASCRIPT
• Curso Javascript para ...
CURSO DE NODEJS
• Nodejs Curso Desde Cer...
MAS EJEMPLOS DE JAVASCRIPT ORIENTADO A OBJETOS
• Aplicación de Producto...
CURSO DE GIT:
• Git y Github | Curso P...
VIDEO DE VSCODE:
• Visual Studio Code, Ed...
VISITA MI SITIO WEB PARA MÁS CURSOS Y TUTORIALES
www.faztweb.com
blog.faztweb.com
FAZT CODE - KZfaq:
/ @faztcode
TWITTER
/ fazttech
INSTAGRAM
/ fazttech
FACEBOOK
/ fazttech
COMUNIDAD EN DISCORD
/ discord
#javascript #nodejs #mongodb #bootstrap4 #expressjs

Пікірлер: 902
@FaztTech
@FaztTech 5 жыл бұрын
INDICE DEL TUTORIAL 1. Backend: 04:47 2. Views (Template Engine): 41:24 3. CRUD: 59:13 4. Register/SingUp: 02:03:30 5. Login / SignIn: 02:30:27 6. Navigation: 02:51:54 7. Personal Data for Users: 03:12:40 Hey Coders, como el vídeo es largo, les dejo el Indice del tutorial para que lo pueden continuar en su propio tiempo, y velocidad. Adicionalmente pueden encontrar más información como el código final, la comunidad, y demás en la descripción :) PD: el siguiente ejemplo de Nodejs y Mongodb, sera la creación de una tienda virtual utilizando Stripe.
@XavierPC
@XavierPC 5 жыл бұрын
SUPER GENIAL FAZT !!! (like♥) GRACIAS POR TUS VIDEOS
@leroycarrasquero6491
@leroycarrasquero6491 5 жыл бұрын
Es algo particular que esté hecho en NodeJs & Mongodb? se podría usar una base de datos Sql como Postgres? Me refiero a lo óptimo? o lo ideal de node es trabajarlo con Mongo?
@JosueVader
@JosueVader 5 жыл бұрын
@@leroycarrasquero6491 lo ideal es mongo ya que usas el mismo lenguaje de Javascript para hacer todo el backend y los modelos, es por eso que el stack MEAN es lo que es, un conjunto de tecnologías que usa Javascript para hacer páginas web, usa mongo, es más fácil y sencillo del o que se ve, saludos.
@finnelhumano3326
@finnelhumano3326 5 жыл бұрын
Que geniooo !
@zeykilow7721
@zeykilow7721 4 жыл бұрын
Hay dios
@elpucarlino
@elpucarlino 2 жыл бұрын
Si tienes problemas con el express-handlebars acá esta corregido const express = require('express'); const app = express(); const path = require('path'); const methodOverrride = require('method-override'); const session = require('express-session'); let exphbs = require('express-handlebars'); //settings app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('.hbs', exphbs.engine({ defaultLayout: 'main', layoutsDir: path.join(app.get('views'), 'layouts'), partialsDir: path.join(app.get('views'), 'Partials'), extname: '.hbs' })); app.set('view engine', '.hbs');
@moisessala3800
@moisessala3800 Жыл бұрын
grande
@joelcamilo8252
@joelcamilo8252 10 ай бұрын
Muchas gracias!! en caso de que no les funciones es porque el methodOverride tiene una letra r de más.
@thebrayannohax4904
@thebrayannohax4904 8 ай бұрын
Graciaaaas
@matiasbertoni1561
@matiasbertoni1561 2 жыл бұрын
si no les lee el titulo ni la desc al agregar el crud. se soluciona agregando .lean() despues del .find(): router.get('/notes', async (req, res) =>{ const notes = await Note.find().lean(); res.render('notes/all-notes', { notes }) })
@kastikas
@kastikas Жыл бұрын
Estube copy-codeando de este video y solo queria decirles que si reciben el error de EXPHBS is not a function lo pueden arreglar con app.set('.hbs', exphbs.engine({...}))
@pabloalejandroramos
@pabloalejandroramos 9 ай бұрын
Gracias crack me salvaste!
@luisPal23
@luisPal23 3 ай бұрын
Grande de grandes
@hugogalvez7985
@hugogalvez7985 3 жыл бұрын
una solución para ara la los que tienen este error: "Handlebars: Access has been denied to resolve the property" al usar {{each}}, es usar la función .lean(), asi: "const notas = await Note.find().lean();" agiliza el proceso pero, devuelve un objeto JSON en vez de uno del propio Mongoose
@Thecots
@Thecots 3 жыл бұрын
grande coño
@saddamviera2596
@saddamviera2596 3 жыл бұрын
brother eres un maestro, pero solo por conocimiento, que es lo que esta retornando a "all-notes" y como hacer un teste tipo console.log en "all-notes" para saber q hay. por ejemplo yo corregi el error colocando notes.title pero no mostraba nada
@homerohernan
@homerohernan 2 жыл бұрын
Pffff llevo horas buscando como solucionarlo, muchas gracias!!
@yeisondiaz8801
@yeisondiaz8801 2 жыл бұрын
grande amigo llevaba un día buscando la solución.
@williamromerovela
@williamromerovela 5 жыл бұрын
¿Sabes cual es la ventaja con tus videos? Es que pese a que son largos, explicas como todos quisieramos que nos explicaran cuando no entendemos. ¡Gracias Fazt!
@AngelPC
@AngelPC 4 жыл бұрын
Definitivamente así es, este hombre te explica todo cada linea de codigo"como con plastilina", te mastica todo
@jos3509
@jos3509 3 жыл бұрын
@@AngelPC oye no me reconoce el npm porque??
@AngelPC
@AngelPC 3 жыл бұрын
@@jos3509 manda como lo estás colocando o que error te está mandando
@emersonperalesvillanueva8568
@emersonperalesvillanueva8568 3 жыл бұрын
siCierto bro :'u
@TheLukeOMG
@TheLukeOMG 3 жыл бұрын
@@jos3509 proba con yarn
@emersonperalesvillanueva8568
@emersonperalesvillanueva8568 3 жыл бұрын
Si han tenido problemas con el {{user.name}} en el minuto 3:09:53 cambien la configuración del motor de vistas por este: app.engine('.hbs', exphdb({ defaultLayout: 'main', layoutsDir: path.join(app.get('views'), 'layouts'), partialsDir: path.join(app.get('views'), 'partials'), runtimeOptions: { allowProtoPropertiesByDefault: true, // allowProtoMethodsByDefault: true }, extname: '.hbs', }));
@antoniopuerta9563
@antoniopuerta9563 3 жыл бұрын
Bravo, crack !
@malla9171
@malla9171 2 жыл бұрын
Muchas gracias :D
@juanmanuelarmeroviveros5331
@juanmanuelarmeroviveros5331 2 жыл бұрын
me acabo de tirar una hora buscando la solución y después vi este comentario. Gracias Broo
@Thothitox0120
@Thothitox0120 2 жыл бұрын
Si tengo otro nombre para el name como lo hago
@Sotelord
@Sotelord 2 жыл бұрын
crack
@TanisJam
@TanisJam 5 жыл бұрын
Genial Fazt! Nunca fui amante de los videos largos hasta que llegué a tu canal. Para quienes estamos aprendiendo con recursos gratuitos tu contenido es una joya. Gracias por todo lo que haces!
@luismeza6015
@luismeza6015 5 жыл бұрын
Es oro mijin!
@cristophercuin486
@cristophercuin486 5 жыл бұрын
Lo mismo pensé TanisJam
@everramirez9294
@everramirez9294 3 жыл бұрын
@@luismeza6015 no se me olvida pp
@everramirez9294
@everramirez9294 3 жыл бұрын
@@luismeza6015 no PP p
@everramirez9294
@everramirez9294 3 жыл бұрын
@@luismeza6015 o
@soycruzado
@soycruzado 4 жыл бұрын
Por si alguien tiene el problema de Handlebars: Access has been denied to resolve the property "..." because it is not an "own property" of its parent. lo que necesitan es añadir otra dependencia la cual se instala de esta forma npm install @handlebars/allow-prototype-access Una vez instalada al archivo index.js que se encuentra en la raíz le colocan las siguientes lineas en el área de importación const handlebars = require('handlebars'); const {allowInsecurePrototypeAccess} = require('@handlebars/allow-prototype-access'); Y dentro de app.engine después del extname colocan lo siguiente handlebars: allowInsecurePrototypeAccess(handlebars) De esta forma podrán tener acceso a los datos para mostrarlos en las vistas
@Juanagogoolives
@Juanagogoolives 3 жыл бұрын
Gracias crack! :)
@VictorRafaelMachadoArteaga
@VictorRafaelMachadoArteaga 3 жыл бұрын
Funciona perfectamente!!
@luisandrescabezasvelez3050
@luisandrescabezasvelez3050 3 жыл бұрын
eres un capo , solucionaste el inconveniente
@fernandofernando8382
@fernandofernando8382 3 жыл бұрын
mejor router.get('/notes', async (req, res) => { await Note.find() .then(documentos => { const contexto = { notes: documentos.map(documento => { return { title: documento.title, description: documento.description } }) } res.render('notes/all-notes', { notes: contexto.notes }) }) }) y te evitas hacer insegura tu app :V
@Sotelord
@Sotelord 2 жыл бұрын
Hubo un pequeño cambio en express-handlebars, a la hora de hacer app.engine ('.hbs', exphbs ... es necesario poner exphbs.engine. Si no les indica que exphbs no es una funcion.
@v1bra387
@v1bra387 2 жыл бұрын
hay un video que es la actualizacion de este, lo subio hace mes y medio
@adrielibarra7087
@adrielibarra7087 2 жыл бұрын
@@v1bra387 Donde aparece el video actualizado?
@esteban1133
@esteban1133 2 жыл бұрын
@@adrielibarra7087 en el canal Fazt Code
@hernansastre8732
@hernansastre8732 2 жыл бұрын
@@v1bra387 donde?
@MrGasparilom
@MrGasparilom 2 жыл бұрын
Uff, casi me vuelvo mono revisando y volviendo atras en el video para ver donde cometí el error ja ja ja
@davidmorales1163
@davidmorales1163 3 жыл бұрын
El equivalente de < class="form-group"> y < class="btn-block"> en Bootstrap v5 es < class="mt-3"> y respectivamente.
@diegohuapayarivera2551
@diegohuapayarivera2551 3 жыл бұрын
Ty men, no sabia porque no funcionaba
@hugogalvez7985
@hugogalvez7985 3 жыл бұрын
MUCHAS GRACIAS!! enserio! pero.. ¿por que paso esto?
@luqezr
@luqezr 2 жыл бұрын
Media hora estuve viendo por que no funcionaba btn-block ._. gracias!!
@criistiansuarez3563
@criistiansuarez3563 2 жыл бұрын
@@hugogalvez7985 porque se actualiza constantemente y mejora. como en todos los lenguajes
@bitshifter4615
@bitshifter4615 2 жыл бұрын
Qué raro, a mí me funciona con form-group y btn-block
@joaquimjairmerloluque3488
@joaquimjairmerloluque3488 2 жыл бұрын
si tienen un error el el minuto 1:29:40 router.get('/notes', async (req, res) => { const notes = await Note.find().lean() console.log(notes) res.render('notes/all-notes', {notes}) }) esta es la solución
@granjuangamer2278
@granjuangamer2278 2 жыл бұрын
joder, muchas gracias amigo por la solucion, estaba sufriendo por ese error, GRACIAS
@SergioLotito
@SergioLotito 2 жыл бұрын
Excelente, explicás clarito, paso a paso. Muchas gracias por tus videos!!! Me topé con ésto, a los que los find() de la base de datos le traiga un error en la consola tipo: "Handlebars: Access has been denied to resolve the property ..." tienen que ponerle find().lean() o findById().lean(). Por lo menos en mi versión de node/mongo hubo ese cambio.
@perezg74
@perezg74 2 жыл бұрын
Muchas gracias amigo, estaba rompiéndome la cabeza con ello
@HUNTER_PATROL
@HUNTER_PATROL 2 жыл бұрын
tengo el mismo problema dice access has been denied to resolve the property 'title' because it is not an 'own property' podrian ayudarme? minuto 1:29:29
@angelicavergara4129
@angelicavergara4129 2 жыл бұрын
me ayudaste muchísimo con eso, estaba teniendo exactamente ese problema y tenia mas de una hora partiéndome la cabeza, revisando que había puesto mal si todo estaba igual
@MiikeEnCiel
@MiikeEnCiel Жыл бұрын
Muchas gracias este proyecto ya tiene su tiempo y muchas dependencias han cambiado el uso de métodos aun así me sirvió muchísimo no solo para aprender siguiendo lo que hacías sino para buscar por mi parte la nueva aplicación a los métodos para poder hacer funcionar en su totalidad este proyecto. También agradecer a los que en sus comentarios ayudaron a resolver los inconvenientes que se fueron presentado.
@revoldfmb
@revoldfmb 5 жыл бұрын
Hombre, hay que agradecer tus conocimientos y como los impartes. Te invitaría las cervezas respectivas por tú ayuda a los desarrolladores De hecho, tus tutoriales me han salvado la vida en algunos proyectos. De grande quiero ser como tú Saludos
@steventabango4790
@steventabango4790 5 жыл бұрын
Ojalá hubiese visto este video antes de mi entrevista de trabajo.
@Devniel54
@Devniel54 4 жыл бұрын
eso es lo que estoy haciendo yo V:
@jesushernandez1922
@jesushernandez1922 4 жыл бұрын
@@Devniel54 Rttttttt Jajajjajajaja Eso es lo que ando haciendo jajaja
@javierjimenez3627
@javierjimenez3627 4 жыл бұрын
@@jesushernandez1922 y Como te. Fue 👀 ?
@erickortiz6049
@erickortiz6049 4 жыл бұрын
saben por que al colocar el comando mongod me sale error?
@gersongonzalez.4166
@gersongonzalez.4166 3 жыл бұрын
@@erickortiz6049 lo tienes agregado al path?
@LordMegabite
@LordMegabite 5 жыл бұрын
Calidad de este tipo en castellano no se ve todos los dias. Enhorabuena por el trabajo cada video esta trabajado y se aprende mucho con toda la informacion que vas dando, que es de lo mas importante para aquellos que comenzamos a aprender nuevos frameworks
@lalibertadavanzamendoza
@lalibertadavanzamendoza 2 жыл бұрын
Para los que tienen problemas con handlebars, en el archivo src/index.js tienen que modificar el app.engine de la linea 17 y agregarle esas properties al exphbs allowProtoPropertiesByDefault: true y allowProtoMethodsByDefault: true. De la manera que el codigo les quedara de la siguiente manera: app.engine('.hbs', exphbs({ defaultLayout: 'main', runtimeOptions: { allowProtoPropertiesByDefault: true, allowProtoMethodsByDefault: true, }, layoutsDir: path.join(app.get('views'), 'layouts'), partialsDir: path.join(app.get('views'), 'partials'), extname: '.hbs' })); de esta manera solucionan el problema de handlebars en toda la aplicacion y no tienen que recurrir a parches con lean().
@omarnavarro369
@omarnavarro369 2 жыл бұрын
Gracias!!
@sofc223
@sofc223 2 жыл бұрын
Muchas gracias! Andaba desesperada por que no encontraba la solución a este error, te mando un beso!
4 жыл бұрын
Había terminado un curso en udemy de Nodejs y entendía perfectamente todo lo que hablabas. Sin embargo, por falta de práctica algunos conceptos no los recordaba bien. Éste video me ayudó mucho a reforzar mis conocimientos, muchas gracias Fazt!
@kimberlygarcesperez5975
@kimberlygarcesperez5975 3 жыл бұрын
Los cambios que se deberia hacer en el index.js para el correcto funcionamiento son estos: const express = require('express'); const path = require('path'); const Handlebars = require('handlebars') const expressHandlebars = require('express-handlebars') const methodOverride = require('method-override') const session = require('express-session') const {allowInsecurePrototypeAccess} = require('@handlebars/allow-prototype-access') //inicialitation const app = express(); require('./database') //settings app.set('port', process.env.PORT || 3000) app.set('views', path.join(__dirname, 'views')) app.engine('.hbs', expressHandlebars({ defaultLayout: 'main', handlebars: allowInsecurePrototypeAccess(Handlebars), layoutsDir: path.join(app.get('views'), 'layouts'), partialsDir: path.join(app.get('views'), 'partials'), extname: '.hbs' })); app.set('view engine', '.hbs'); //Middlewares espero les sea de ayuda
@guidomr3158
@guidomr3158 2 жыл бұрын
Muchas gracias!! Me solucionaste un error
@cajegoprosilveredits9949
@cajegoprosilveredits9949 2 жыл бұрын
Gracias por tu aporte pero cuando reemplazo tu código no se me ejecuta el servidor, hay que hacer algo mas?
@iG-MC5
@iG-MC5 Жыл бұрын
Para los que tiene problemas para acceder a las propiedades user.name en 3:09:48. En passport.js, debes cambiar el passport.deserializeUser((id, done) => { User.findById(id, (err, user) => { done(err, user); }); }); por passport.deserializeUser(function (id, done) { User.findById(id) .lean() .exec(function (err, user) { done(err, user); }); });
@rolifuentes
@rolifuentes 3 жыл бұрын
Súbelo mil veces para darle mil veces LIKE!! Muchas gracias
@tintanarrativa6507
@tintanarrativa6507 4 жыл бұрын
Fazt! Llevo meses viendo tus videos, y definitivamente tienes uno de los mejores canales de programación, gracias por compartir tus conocimientos! Muy bien video!
@ivanmeller1
@ivanmeller1 5 жыл бұрын
Muchas gracias Fazt! Tus videos son excelentes, muy bien explicados, soy desarrollador jr y estoy aprendiendo estas tecnologías y tus videos son un lujo. Seguí así, lo mejor en habla hispana.
@estuardomarroquin303
@estuardomarroquin303 3 жыл бұрын
Para los que no les redirecciona a su id en el minuto 1:39:26 el error no esta en el archivo all-notes.hbs lo que pasa es que no están obteniendo la id. Para obtener la id deben ir al archivo notes.js y obtener los datos de las notas así: router.get('/notes', async (req, res)=>{ await Note.find().sort({date: 'desc'}) .then(documentos =>{ const contexto = { notes: documentos.map(documento=>{ return{ title: documento.title, description: documento.description, _id: documento._id } }) } res.render('notes/all-notes', { notes: contexto.notes}) }) })
@jhosimarpinto4769
@jhosimarpinto4769 3 жыл бұрын
Muchas gracias bro. Por otro lado, en el minuto 1:45:00 cuando hago click en el lapicito para editar la nota me sale el mensaje: Cannot GET /notes/edit/6099f04341e760322c0a024e El código que usa Fazt en el ARCHIVO note.js para editar las notas es: router.get('notes/edit/:id', async (req, res) => { const note = await Note.findById(req.params.id); res.render('notes/edit-note', { note }); }); Pero no me funciona.
@wandamon1152
@wandamon1152 3 жыл бұрын
@@jhosimarpinto4769 tengo el mismo problema, al final usted pudo resolverlo??
@luisdavidmendez1166
@luisdavidmendez1166 3 жыл бұрын
​@@jhosimarpinto4769 Bueno para los que tuvieron el mismo error que yo al mostrar los elementos, es fácil de resolver claro que a mi me tomo mucho pues estoy aprendiendo. tenia la opción de usar Note.find().len() pero cuando lo utilizaba así luego no me permitía editarlo, pues las opciones mas validas son: usar el método .map() para mapearlo y así si se muestra, pero a la hora de hacer la consulta para actualizarlo mongoose devuelve un objeto que pertenece a mongoose valga la redundancia!! y no se puede mapear por que el método .map() es para arrays no para objetos, pero la solución es mas sencilla, solo tenemos que clonar el objeto de mongoose con Object.assing({},note) y así lo pasa sin tener que instalar una versión anterior de handlebars y también se aprende a usar con las nuevas actualizaciones. claro que también tendremos que cambiar algunas cosas como NombreDeConstante._doc. _id, NombreDeConstante._doc.title, etc. algo como: mapeando el array que devuelve router.get('/notes', async (req, res) => { await Note.find().then(doc => { const ari = { notes: doc.map(document => { return { id: document._id, title: document.title, description: document.description } }) } res.render('notes/all-notes', { notes: ari.notes }) }); }); pasando los datos para actualizarlos y que no de error de acceso al mandarlo por el método put router.get('/notes/edit/:id', async (req, res) => { const note = await Note.findById(req.params.id); const nada=Object.assign({},note); res.render('notes/edit-note', { nada }); }); el HTML seria algo así: Edit Note {{nada._doc.description}} Guadar talves hay mejores opciones pero esta fue la que encontré hasta el momento.
@nelsons.775
@nelsons.775 4 жыл бұрын
El mejor video de programación que he visto, siempre para hacer algo tengo que estar saltando entre videos de diferentes canales , pero con este comprendí no solo lo que nesitaba sino que bastante más
@ehm1224
@ehm1224 2 жыл бұрын
Fazt, Edgardo desde Colombia. No quería dejar pasar ni un minutos mas sin agradecerte tamaño esfuerzo, realmente te doy las gracias por tomarte todo este tiempo para ayudarnos en nuestro aprendizaje. te deseo mucha prosperidad y salud para que sigas en esta cruzada.
@programacion3154
@programacion3154 2 жыл бұрын
Kpos, si en 1:30:00 no les sale los titulos y descripciones de sus notas, vayan a routes/notes.js y ahi en la parte donde tienen el const notes = await Note.find() agreguenle el .lean(), o sea que quedaria asi "const notes = await Note.find().lean();" Espero que les sirva.
@delficanas3562
@delficanas3562 2 жыл бұрын
Me re sirvió! Estuve mucho tiempo buscando si había escrito algo mal. Muchas gracias!
@programacion3154
@programacion3154 2 жыл бұрын
@@delficanas3562 Me alegra mucho
@PedroLandauro
@PedroLandauro 2 жыл бұрын
gracias, eres un crack.
@byRedHunter
@byRedHunter 4 жыл бұрын
Otra forma de hacerlo en el minuto 1:27:43, es de la sigiente forma: const documents = await Note.find().sort({ date: 'desc' }) let collection = [] documents.forEach((document) => { collection.push({ title: document.title, description: document.description, }) }) res.render('notes/all-notes', { notes: collection }) espero les ayude. 😁
@miguelangellp1516
@miguelangellp1516 4 жыл бұрын
eres un crack amigo, lo habia consultado en stackoverflow y lo tenian con las promesas, pero esta es mucho mas facil de comprender. Gracias
@alvarotapia9696
@alvarotapia9696 4 жыл бұрын
Buena maquinola
@luisfarco5522
@luisfarco5522 4 жыл бұрын
Eres grande amigo Gracias
@TheCharlie_98
@TheCharlie_98 4 жыл бұрын
Alguien en este fragmento que tenga este error? Se generan las tarjetas según las notas que contiene la BD, pero no muestra el titulo y la descripción. El error que se genera es: Handlebars: Access has been denied to resolve the property "title" because it is not an "own property" of its parent. You can add a runtime option to disable the check or this warning: See handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details
@miguelangellp1516
@miguelangellp1516 4 жыл бұрын
@@TheCharlie_98 La solución al error no es instalar la dependencia desactualizada, sucede que handlebars actualizó sus librerías para mejorar la seguridad, y entre esos cambios es la forma en que se envían los datos consultados de la base de datos hacia las vistas. Por tanto la nueva forma que deben realizar es crear un array, llenar los datos de la consulta en el array, y renderizar la vista con el array y no con la consulta directa de la base. Ejemplo const imagenes = await Imagenes.find(); const coleccionImagenes = []; imagenes.forEach( image => { coleccionImagenes.push({ titulo : image.titulo, url : image.url }); res.render('/',{imagenes : coleccionImagenes}); -------------------------------------------------------------------- Lo anterior en el caso de usar .find() ya que devuelve un arreglo con todos los datos. Si usas .findOne() no es necesario que uses el forEach, accedes directamente a cada atributo. Construyendo otro objecto destructurando. Ejemplo const { titulo , url } = Imagenes.findOne({_id)}); const coleccionImagenes = { titulo, url }; res.render('/',{imagenes : coleccionImagenes}); Saludos.
@darkin5225
@darkin5225 2 жыл бұрын
A éste video le tengo unas ganas hace rato, le metí varias horas(solo hice una hora de video jaja) y hasta ahora entendí y me salió todo(aveces no entiendo algo y lo dejo). Gracias Fazt, podrá pasar el tiempo pero éstos videos valen oro.
@csh5983
@csh5983 4 жыл бұрын
Me clave las 3 horas de video y todo fue excelente!, muchas gracias profesor!!! :D funciono todo!, ahora voy a seguir practicando para ver el video de la red social que son como 5 horas!, que valen la pena!, muy agradecido con tu material! :D
@gersonmayer
@gersonmayer 5 жыл бұрын
Me demore 4 dias, valieron la pena, gracias por compartir!
@narutoshadown
@narutoshadown 3 жыл бұрын
nomms es demaciado jajajaja creo que deberias dedicarte mas
@gersonmayer
@gersonmayer 3 жыл бұрын
@@narutoshadown hoy en "opiniones que nadie pidió"...
@Disconluis
@Disconluis 5 жыл бұрын
Ya era hora de un video asi! Gracias!
@chonchilo
@chonchilo 4 жыл бұрын
Sos crack campeón! Me morfé el vidio mal... Tuve un par de inconvenientes debido a las versiones, porque me tardé un par de años en ver el tutorial, a parte de eso, ESPECTACULAR! Muchas gracias y sigue enseñándonos! Saludos desde Argentina.
@hoeangeru2
@hoeangeru2 4 жыл бұрын
No puedo creer que lo pude terminar... me tarde mucho pero ahora me queda estudiar el codigo. Gracias!!!!
@zacsam1615
@zacsam1615 5 жыл бұрын
Sos un crack, saludos desde Argentina!
@ernestorodriguez7715
@ernestorodriguez7715 4 жыл бұрын
npm i express express-handlebars express-session method-override mongoose passport passport-local bcyptd connect-flashg
@jos3509
@jos3509 3 жыл бұрын
no compartas si lo vas a escribir mal jaja
@ramilo69
@ramilo69 5 жыл бұрын
No paro de aprender....simplemente tu canal es un autentico tesoro; gracias por todo y espero que te veas recompensado por todos estos tutoriales....
@jato2130
@jato2130 2 жыл бұрын
Las opciones userCreateIndex, useFindAndModify, useNewUrlParser y useUnifiedTopology de mongoose han sido obsoletas, usad mongoose.connect('bd_URI') simplemente ya que a partir de la v6 estas estan fijadas de la siguiente manera: useNewUrlParser, useUnifiedTopology y useCreateIndex como true, y useFindAndModify como false. Me ha encantado como explicas cada parte y aconsejas tomarse los descansos necesarios, solo estoy familiarizado con java y me has ayudado mucho a afianzar conocimientos en js. Espero que siga creciendo el canal como se merece.
@jhonoquendo6163
@jhonoquendo6163 5 жыл бұрын
Wooo, respetable brother, muchas gracias por compartir tal conocimiento, muy agradecido. Con ansias de seguir aprendiendo. Saludos.
@PabloBezzard
@PabloBezzard 2 жыл бұрын
Hola, si alguien le salta error de: TypeError: exphbs.e is not a function Deben agregar .engine a exphbs. Queda así: app.engine('.hbs', exphbs.engine
@ayerotta3472
@ayerotta3472 2 жыл бұрын
Gracias me funcioni!! Solo que cuando pongo "localhost:3000/users/signin" me marca error "Cannot GET /users/signin"
@JoseSanchez-gs3kz
@JoseSanchez-gs3kz 2 жыл бұрын
muchisimas gracias
@josefigueredo8053
@josefigueredo8053 2 жыл бұрын
a mi me sale y lo coloco y no se arregla
@davidmartinalvarez978
@davidmartinalvarez978 2 жыл бұрын
Heroe sin capa
@NameGFX
@NameGFX 2 жыл бұрын
eres un capo muchas gracias
@pacoalvarez5171
@pacoalvarez5171 4 жыл бұрын
Las felicitaciones, mas bien son para ti, porque eres una máquina explicando, en conocimientos, en paciencia... En definitiva, que muchiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisimas gracias por el vídeo. Saludos desde España.
@pablogonzalezramirez7397
@pablogonzalezramirez7397 5 жыл бұрын
Felicitar al Creador de Este Video de mucha ayuda, rapida introducción y abarca los temas mas importantes, Muy Bien
@grbsql
@grbsql 5 жыл бұрын
Muy bien Fazt. Excelentes cursos. Muchas gracias
@screamdust4724
@screamdust4724 3 жыл бұрын
HUMILDE APORTE. Si tienes el problema de que al enviar el formulario con datos en la consola aparece lo siguiente: [Object: null prototype] { title: hola1 description: hola2} debes ir a la parte de las rutas y recibir los parametros para transformarlos en JSON mediante una constante, de la siguiente manera: const obj = JSON.parse(JSON.stringify(req.body)); console.log(obj); res.send('ok'); Esto permitirá que tus datos se lean correctamente
@miguelrocha5662
@miguelrocha5662 4 жыл бұрын
Creo que ya había puesto este comentario. Minuto 1:36:28 aprox. Para borrar los registros de una coleccion: db.notes.remove({}). Excelente material!!! Muchas gracias por compartir el conocimiento
@keylerfernandotajtaj1084
@keylerfernandotajtaj1084 Жыл бұрын
Que nivel de explicación Fazt, gracias. Si están utilizando la versión 6 de mongo db ya no les "funcionará" el comando: mongo. Únicamente asegúrense de que tengan mongo server y si quieren visualizar su inserción utilicen mongo compass.
@chrisytbexp6705
@chrisytbexp6705 4 жыл бұрын
Hola amigo fazt, quisiera saber si hay alguna forma de poder apoyarte monetariamente, patreon, paypal, etc Estoy muy agradecido con tus videos Sigue asi!
@hazlotumismo1419
@hazlotumismo1419 4 жыл бұрын
Ojala hiciera su extensión de Paypal para recibir pagos, seria super fácil recompensarle. O No busca sacar provecho de sus conocimientos? Quizá no lo necesita, No lo sabemos...
@ArmandoHinojosaCcamaSARC
@ArmandoHinojosaCcamaSARC 5 жыл бұрын
Asuuu :O
@LaminaFerro
@LaminaFerro 5 жыл бұрын
Solo llevo viendo 2 minutos y ya me parece un buen vídeo, nada mas ver, encima , que has creado un indice del video GENIAL. Gracias me llegas en un momento super oportuno para un proyecto que estoy haciendo
@robertramirez7153
@robertramirez7153 4 жыл бұрын
Buenísimo el tutorial. Mi profesor de la Universidad lo está usando para enseñarnos NodeJS
@valeriofunk5000
@valeriofunk5000 3 жыл бұрын
para los que tengan el warning en consola de Handlebars: Access has been denied to resolve the property "title" because it is not an "own property" of its parent. al intentar ver las notas. agreguen la opción lean() así. const notes = await Note.find().lean(); para convertir el documento mongoose a un POJO(plain old javascript object) y poder resolver la propiedad como hijo de su pariente
@tony00110
@tony00110 2 жыл бұрын
muchas gracias, me estaba volviendo loco por eso
@klan351
@klan351 2 жыл бұрын
muchisimas gracias!
@Daker11Gamer
@Daker11Gamer Жыл бұрын
Muchas Gracias, no entendía que pasaba
@luqezr
@luqezr 2 жыл бұрын
Si alguien tiene este error "Handlebars: Access has been denied to resolve the property "title" because it is not an "own property" of its parent." tienen que agregar esto .lean() al find() const notes = await Note.find().lean()
@PedroLandauro
@PedroLandauro 2 жыл бұрын
gracias, eres un crack
@DanniCZ
@DanniCZ 2 жыл бұрын
wey ... gracias a ti conseguí trabajo como desarrollador ... Mil gracias!
@pkmorsan
@pkmorsan 5 жыл бұрын
Genial vídeo para quienes tienen una base de nodejs y no saben por donde empezar para desarrollar una app desde cero, te da una perspectiva excelente para su desarrollo. Por poner una "pega" le ha faltado la actualización de la clase "active" del navbar según la página donde nos encontramos. Enhorabuena y gracias por tu labor.
@Daker11Gamer
@Daker11Gamer Жыл бұрын
Para todos los que estan viendo este video en 2022, Handlebars se actualizó y el código que utiliza Fazt esta obsoleto, varias partes del video necesitan actualización. Escribiré varias partes del código que necesitan ser cambiados: -->Para index.JS en //Setings; cerrar los paréntesis internos en 'views' app.engine('.hbs', exphbs.engine({ defaultLayout:'main.hbs', layoutsDir: path.join(app.get('views'), 'layouts'), partialsDir: path.join(app.get('views'), 'partials'), extname: '.hbs' })); -->Para el database.js; Ya no es necesario escribir las otras tres líneas de código mongoose.connect('mongodb://localhost/notes-db-app') .then(db => console.log('Db is connected')) .catch(err => console.log(err)); -->Para notes.js; es necesario el método .lean() luego de Note.find() router.get('/notes', async(req, res) =>{ const notes = await Note.find().lean(); res.render('notes/all-notes', { notes }); }); créditos a @Juan Amieva, @Valerio Funk por su aportación
@SantiagoMartinez-wu8ct
@SantiagoMartinez-wu8ct Жыл бұрын
hola, en la parte del min 2:50:00 donde corrige User por user, me salta error en la consola, diciendo que .matchPassword is not a function y se me rompe la pagina. Sabes que puede ser? lo hice tal cual, el resto de los codigos desactualizados lo fui solucionando, pero me quede trabado en esta parte.
@yunn17
@yunn17 Жыл бұрын
Neta gracias!!
@kastikas
@kastikas Жыл бұрын
Messirvio al dia de la fecha ... :V
@urielmiranda3097
@urielmiranda3097 Жыл бұрын
Que pasa cuando pongo el app.set engine y cuando lo configuro me aparece que necesito un metodo
@kastikas
@kastikas Жыл бұрын
@@urielmiranda3097 Que raro, has inicializado bien arriba algo asi : const exphbs = require('exphbs'), a partir de ahi si quieres un metodo de exphbs solo le pones el punto, que es lo que luego se hace: app.set('hbs', exphbs.engine({})) y en ese momento es que le estas diciendo , Okey app seteame el hbs y ejecutame el metodo engine de exphbs con estos parametros. Te digo la verdad yo varias quize dejar de seguir haciendo el proyecto, porque llegaba un punto donde no me salia igual. Pero luego volvia para atras el video y revisaba todo de nuevo y a veces es un error tonto como no se en vez de name="email" pones otra cosa... 🤣🤣🤣
@Jannerparejagutierrez
@Jannerparejagutierrez 4 жыл бұрын
Si alguien obtiene el siguiente error por consola: "(node:17116) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor." La solución fue agregando la linea recomendada por el mensaje: { useUnifiedTopology: true } mongoose.connect('mongodb://localhost/notes-db-app', { useCreateIndex: true, useNewUrlParser: true, useFindAndModify: false, useUnifiedTopology: true })
@hoeangeru2
@hoeangeru2 4 жыл бұрын
Muchas gracias, me pasó lo mismo y ya se quitó el warning!
@richardcarmonaestrada5920
@richardcarmonaestrada5920 5 жыл бұрын
y gratis ??? genial felicidades Fazt , suscrito y con la campana activa :)
@asd-123
@asd-123 4 жыл бұрын
Gracias por estos vídeos, soy estudiante de informática y he decidido aprender back end por mi cuenta, con ayuda de documentaciones y adicionando tus vídeos nos ayudan bastante. Me suscribo
@LorenzoJimenez
@LorenzoJimenez 3 жыл бұрын
Dos años después sigue siendo muy útil. Muchas gracias
@webyipei2621
@webyipei2621 5 жыл бұрын
Primero de todo video genial. Segundo, como podemos hacer para que el login y registro consuma por frontend con Angular/vue/react ?
@emeldiaz393
@emeldiaz393 5 жыл бұрын
Fazt tiene un video donde hace una aplicación similar usando React, pero sin backend. Te dejo el link... kzfaq.info/get/bejne/aJZkqZiCva7QnZc.html
@albertorivera8428
@albertorivera8428 3 жыл бұрын
Lo mejor para continuar con el supervideo en el minuto 1:27:47 y 3:09:00 es mejor instalar la version de express-handelbars 3.0.0 como las tiene @fazt veriones posteriores no funcionan, intente de varias maneras. comando para desistalar handelbars npm rm express-handlebars instalar 3.0.0 express-handlebars npm i express-handlebars@3.0.0
@albertorivera8428
@albertorivera8428 3 жыл бұрын
en el 1:39:00 aprox. hay que usar este codigo, en la ruta de /notes router.get('/notes', async (req, res) => { await Note.find().sort({date:'desc'}) .then(documentos => { const contexto = { notes: documentos.map(documento => { return { _id: documento.id, title: documento.title, description: documento.description } }) } res.render('notes/all-notes', { notes: contexto.notes }) }) }); hay que recordar que en hbs como yo lo estoy mandando es igual al de fazt, mas abajo en algunos comentarios estubieron haciendo pruebas y cambiaban _id por id, yo lo deje tal cual, checa tu código.
@albertorivera8428
@albertorivera8428 3 жыл бұрын
Mi servidor local estaba trabado, talvez el tuyo tambien ya intentaste reiniciando el servidor y iniciar servidor Comando para iniciar servidor node src/index.js
@bac2421
@bac2421 3 жыл бұрын
Gracias crack
@salamandrasps3570
@salamandrasps3570 4 жыл бұрын
Fantástico Fazt! Gracias, muchas gracias por invertir tu valioso tiempo enseñando de la forma en que lo haces. Excelente tutorial. Yo provengo de .NET, y gracias tus vídeos, he aprendido que es y como funciona Node JS, NongoDB y ahora como integrar todo. Continuare con Angular, al final decidir en cual de estas tecnologías poder quedarme. Me atrae mucho la idea de desarrollar todo en un solo lenguage pero siempre he querido a aprender también ANGULAR. Ahí va obviamente mi pulgar arriba y hace ya mucho estoy suscrito, solo que hasta hoy he decido iniciar con tus vídeos de capacitación.
@javiermendez6626
@javiermendez6626 Жыл бұрын
No sigáis este tutorial en 2022 si sois novatos, han cambiado muchas cosas en el node moderno, os volveréis un poco locos.
@albertorivera8428
@albertorivera8428 3 жыл бұрын
En el 3:09:00 aprox utilice este codigo en el index.js principal para poder realizar el saludo al usuario, con el de fazt ya no me funciona hasta esta fecha app.use((req, res, next) => { res.locals.success_msg = req.flash('success_msg'); res.locals.error_msg = req.flash('error_msg'); res.locals.error = req.flash('error'); let user = null if(req.user){ user =JSON.parse(JSON.stringify(req.user)) } res.locals.user = user next(); });
@oggijuega
@oggijuega 3 жыл бұрын
Excelente, handlebars no te deja acceder a las propiedades de user directamente, así que debes convertirlo en un texto.
@renantello8523
@renantello8523 3 жыл бұрын
Hola fazt genial el tutorial incluso para beginner como yo, una consulta al declarar la variable global 3:08:44 res.locals.user =req.user || null; al momento de arrancar tengo el siguiente problema "Handlebars: Access has been denied to resolve the property "from" because it is not an "own property" agradecería que me pudieras ayudar con el problema
@ricardoisaza5780
@ricardoisaza5780 3 жыл бұрын
Hola, lo pudiste resolver?
@Thothitox0120
@Thothitox0120 2 жыл бұрын
como lo arreglaste
@MrGasparilom
@MrGasparilom 2 жыл бұрын
@@Thothitox0120 const notes = await Note.find({}).lean().sort({date: 'desc'}); al find() debe agregarle los Corchetes y luego un .lean().
@tomasinlondon
@tomasinlondon 5 жыл бұрын
Lo he visto enterito y cada minuto merece la pena! Millones de gracias por tu ayuda!
@gramajocristianismael282
@gramajocristianismael282 4 жыл бұрын
Estoy justamente en 29/7/2020 en 1:14:35 del video, antes que nada gracias por compartir tu conocimiento. Ahora, vi que muchos consultaban por la validacion del lado del server como respuesta al crear la nota con los campos vacios(o llenos), y quise dejar una solución, almenos la que me parecio sencilla para empezar: router.post('/notes/new-note', (req,res)=>{ const respuesta = req.body; const errores = []; const acept = {text:'Datos correctos!'}; if(respuesta.title == '' && respuesta.description == ''){ errores.push({text:'Inserte titulo!'}) errores.push({text:'Descripcion!'}) }else if(respuesta.title == ''){ errores.push({text:'Inserte titulo!'}) }else if(respuesta.description == ''){ errores.push({text:'Descripcion!'}) } if(errores.length > 0){ res.render('notes/new-note', {errores}) }else{ res.render('notes/new-note', {acept}) } })
@Nipro-ms9zx
@Nipro-ms9zx Жыл бұрын
hermano me salvaste la vida. gracias
@leonelrodriguez3967
@leonelrodriguez3967 3 жыл бұрын
Hola, asi hice para que me funcionara el metodo de Editar router.get('/notes/edit/:id', async (req, res) => { await Note.findById(req.params.id) .then(datos => { //console.log(datos); const contexto = { title: datos.title, description: datos.description } res.render('notes/edit-note.hbs', {note: contexto}) }) })
@MegaHaker3000
@MegaHaker3000 3 жыл бұрын
amigo sabes que entiendo el codigo y todo pero no me toma el id y me arroja este error =>>> titulo:datos.titulo, ^ TypeError: Cannot read property 'titulo' of null
@brah08
@brah08 3 жыл бұрын
Esto deberia estar arriba tambien gracias por el aporte
@geisyalfonsomartinez8803
@geisyalfonsomartinez8803 3 жыл бұрын
amigo, como hizo el methodo PUT ? gracias
@melvincolmenares8665
@melvincolmenares8665 3 жыл бұрын
Buenas Vengo A Solucionarles un Error Que Creo Que A Algunos Nos Paso En El Minuto 57:21 El Problema Es Que No Se Quiere Cambiar El Fondo A Negro Y Porque Sera?? Estuve Investigando Y Dure Una Hora Buscando El Error, Todo Estaba Bien Y No Habia Problemas Con La Sintaxis, En Eso Veo La Versión Que Esta Usando Fazt Del Frameworks De Bootstrap Y Veo Que Mi Versión Esta Muy Avanzada Era La Versión 5.0 Y La De Fazt Era 4.1.3 Entonces Decido Cambiar La Versión De Bootstrap Y Boom Error Solucionado No Se Porque Sera Pero Funciono Aquí Esta La Versión De Bootstrap Que Utilizo Fazt: Espero Haberte Ayudado
@iQCudi
@iQCudi 3 жыл бұрын
ya decia yo pq shusha mi jumbotron no tenia fondo y mis inputs estaban pegados XD nisiquiera me espere toparme con esto, gracias amigo, te mando tres toneladas de BUEN KARMA
@melvincolmenares8665
@melvincolmenares8665 3 жыл бұрын
@@iQCudi jajaja 😂 gracias Bro 😁
@galeriagaming7707
@galeriagaming7707 3 жыл бұрын
gracias buen hombre
@jvivasmora
@jvivasmora 4 жыл бұрын
Bro encantando con tu vídeo, lo vi sin excusas muy atento, aprendí mucho más de lo que sé de NodeJS, JavaScript y MongoDB porque ya sé algo sobre Bootstrap, el mejor amigo la verdad gracias por tu paciencia y tu manera de explicar en los vídeos, te dejo mi buen like y sin duda mi recomendación hacía mis colegas
@luisgaravito9648
@luisgaravito9648 2 жыл бұрын
Excelente en todos los aspectos, desde lo pedagógico hasta el gran conocimiento que tienes en todo los referente al desarrollo en aplicaciones Web. Te felicito!!!!!!! Por Favor sigue enseñándonos. Mil Gracias
@juanmorgana923
@juanmorgana923 5 жыл бұрын
Bro, tengo un error me dice. User.matchPassword is not a function. En la parte del login. El error me aparece en archivo passport.js.
@chiqui1234ok
@chiqui1234ok 4 жыл бұрын
Fijate que es porque debes poner la u de 'User" en minúscula :) Creo que en el video lo dice. Saludos!
@rogermesa6695
@rogermesa6695 4 жыл бұрын
Cuando esten intentando consultar los datos de la base de datos en el minuto 1:27:43 y les salga el siguiente error: Handlebars: Access has been denied to resolve the property "title" because it is not an "own property" of its parent. La solucion mas optima es instalar el siguiente modulo npm install @handlebars/allow-prototype-access Luego de eso en el index.js principal agregan lo siguiente: const Handlebars = require('handlebars'); const {allowInsecurePrototypeAccess} = require('@handlebars/allow-prototype-access'); app.engine('.hbs', exphbs({ handlebars: allowInsecurePrototypeAccess(Handlebars), defaultLayout: 'main', layoutsDir: path.join(app.get('views'), 'layouts'), partialsDir: path.join(app.get('views'), 'partials'), extname: '.hbs' }));
@julianmora2918
@julianmora2918 4 жыл бұрын
Mil gracias, no encontré cómo solucionarlo por ningún lado.
@luisgonzalez05
@luisgonzalez05 4 жыл бұрын
Excelente, esta fue la solucion para mi. Muchas gracias.
@didimoescobar2247
@didimoescobar2247 3 жыл бұрын
Gracias, esta solución hasta el momento me libero el dolor de cabeza con el mismo problema, en index.js lo deje así: antes instale @handlebars/allow-prototype-access": "^1.0.3" const express = require('express'); const path = require('path'); const exphbs = require('express-handlebars'); const methodOverride = require('method-override'); const session = require('express-session'); const Handlebars = require('handlebars'); const {allowInsecurePrototypeAccess} = require('@handlebars/allow-prototype-access'); // Initializations const app = express(); require('./database'); // Settings app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.engine('.hbs', exphbs({ handlebars: allowInsecurePrototypeAccess(Handlebars), defaultLayout: 'main', layoutsDir: path.join(app.get('views'), 'layouts'), partialsDir: path.join(app.get('views'), 'partials'), extname: '.hbs' }));
@oskar2684
@oskar2684 5 жыл бұрын
Hola Fazt, llevo unos 3 meses aprendiendo, ojala sigas haciendo vídeos así, son los que mejor explicados están. Gracias.
@Leo-on2pd
@Leo-on2pd 5 жыл бұрын
@Fazt Amigo, ante todo, muchas gracias por estar compartiendo ese gran contenido gratis, usted es sensacional !!! Y segundo, quiero decir que el curso fue una gran revisión acerca de la tecnología nodeJS y es super indicado para alguien que quiere aprender desde cero a utilizarlo (el node). Después de este tutorial que es demasiado fácil de entender (la parte más compleja es la de autenticación con el módulo passport, pero nada de otro mundo) ya puedo decir que tengo condiciones de empezar a desarrollar mis propias aplicaciones y utilizar otros módulos.
@grbsql
@grbsql 5 жыл бұрын
Saludo Fazt. Excelentes cursos los que elaboras. Eres grande. Muchas gracias y felicitaciones.
@grbsql
@grbsql 5 жыл бұрын
Acabo de terminar el de views. Muy importante de tus vídeo cursos, que todo funciona bien. Sólo en uno me tocó investigar porque cambió una versión. Muchas gracias Fazt.
@Graziel
@Graziel 5 жыл бұрын
2:58 yo pregunte eso, y me dieron un corazón y yo pensaba que me habían ignorado jaja buen vídeo :D
@rodymichel
@rodymichel 4 жыл бұрын
Gracias faz excelente tutorial vi todo tu vídeo y la verdad aprendí más de vos q de Los profesores qué tengo en la universidad gracias por tus videos
@julianmora2918
@julianmora2918 4 жыл бұрын
Cada vez que veo que hay un video que dura tres horas me emociono mucho y me preparo para darle al código.
@junior1907
@junior1907 2 жыл бұрын
Para quienes lleguen al 2:51:27 y les aparezca como PopUp "Missing credentials", deben ir al archivo passport.js y asegurarse que el parámetro de LocalStrategy sea usernameField: "email". Debe quedar algo así: passport.use(new LocalStrategy({usernameField: "email",},...)
@albertosalgadodev4912
@albertosalgadodev4912 Жыл бұрын
Mis variables las nombre de una forma distinta a mi proyecto... pero asi solucione ese error (En realidad estaba esperando el parametro passswordField tambien) passport.use(new LocalStrategy({usernameField: "emailU", passwordField:"contrasenaU"}, async(emailU, contrasenaU, done)=>{ const user= await User.findOne({emailU:emailU}); if(!user){ return done(null, false, {message:'Usuario no encontrado'}); }else{ const match = await user.matchPassword(contrasenaU); if(match){ return done(null, user); }else{ return done(null, false, {message:'Contraseña Incorrecta'}); } } }));
@kevinhiggins320
@kevinhiggins320 5 жыл бұрын
@Fazt, gracias por tomarte tu tiempo y compartir tu conocimiento. Con tus tutoriales he comenzado amar el desarrollo.
@carlosdmarceleno4250
@carlosdmarceleno4250 5 жыл бұрын
muchísimas gracias! Fazt excelente material para personas como yo que recién empiezan en este mundo del desarrollo web.
@javierenriquemendozamercad6022
@javierenriquemendozamercad6022 5 жыл бұрын
Amigo muchísimas gracias, la verdad es que has explicado muy bien todos los temas. Han sido las mejores 3 horas que he invertido en mi aprendizaje de Node.js.
@giovannialexander1956
@giovannialexander1956 5 жыл бұрын
Heroe sin capa, me quedé hasta el último segundo, gracias por el contenido
@giamar3026
@giamar3026 2 жыл бұрын
Están muy buenos tus videos, solo faltaría que respondas las preguntas, porque es frustrante seguir los pasos y comerte unas horas, ya que uno va retrocediendo y mirando de nuevo y de pronto quedar truncado y no poder avanzar, quiza es xq las versiones de dependencias son diferentes. Bueno es un detalle, muchas gracias x compartir tus conocimientos. Tomo clases de pago y la verdad que si no fuera x lo que te expuse, me quedo con tu forma de explicar
@sebastiangomez6330
@sebastiangomez6330 4 жыл бұрын
Desde Colombia muchisimas gracias, esto me ha servido un montón para aprender cosas de Node y de MongoDB que quiero aplicar a mi vida profesional
@LaMagiadeReact
@LaMagiadeReact 3 жыл бұрын
Deberias tener mas seguidores :D con la calidad de este curso, pudieras añadir en la descripcion que es con express 3.0 para que funcione tal cual pero la verdad ayuda mucho este curso, ya casi termino el curso
@youcrax
@youcrax 4 жыл бұрын
Impresionante Fazt! Muchas gracias por explicar estos conceptos en un proyecto, ayuda muchisimo cuando ves todas las cosas juntas. Seguí así! Aprendi mucho con tus videos! Gracias!!!! PD: Es la primera vez que puedo terminar un video tan largo de programacion con un proyecto funcionando en su totalidad
@yanniosanchez9084
@yanniosanchez9084 5 жыл бұрын
Buen video brother lo explica de forma muy profesional y sin desperdicio solo me toca decir mil gracias.
@marcospacheco1821
@marcospacheco1821 3 жыл бұрын
Sou brasileiro, mas seus vídeos são tão bom que a língua não é um empecilho.
@carlosmurillo7015
@carlosmurillo7015 5 жыл бұрын
Increíble. Un agradecimiento, eres excelente y te admiro muchísimo. Muchas felicidades por esa facilidad.
@jesulujan01
@jesulujan01 4 жыл бұрын
master de verdad por favor nunca dejes hacer vídeos y contribuir a la comunidad hacker que comienza a desarrollar software :D
@jairosuse85
@jairosuse85 2 жыл бұрын
Eres la Neta del Planeta Faz !!!
@davidpalomeque4770
@davidpalomeque4770 5 жыл бұрын
Espectacular el tutorial fazt ! Ayuda mucho que pongas un índice y lo dividas por partes.
@oscartrevinogonzalez8481
@oscartrevinogonzalez8481 5 жыл бұрын
Gran video!! gracias, en verdad. Creo que tus videos son los mejores que he encontrado, y lo mejor de todo: gratuitos!!
@tarriochu95
@tarriochu95 3 жыл бұрын
Hermoso video, no sabia nada de nodejs, nadamas lo tenia instalado y a travez de este video he podido ir aprendiendo ciertas cositas
@edmundodominguezagurcia7254
@edmundodominguezagurcia7254 4 жыл бұрын
Termine el proyecto, muchas gracias Fazt, la verdad me ha ayudado muchisimo. Largo, pero vale la pena.
@MiguelAngelMarroquinJordan
@MiguelAngelMarroquinJordan 5 жыл бұрын
Muchas gracias! En serio excelente explicación deberías de hacer cursos en Udemy, me encantaría comprarte cursos y ayudar a que sigas haciendo estos videos. Muy didácticos gracias
@gmansi
@gmansi 5 жыл бұрын
O poner un enlace para que se puedan hacer "donaciones" en el mismo video, sería otra forma
Curso Python para Principiantes
3:15:35
Fazt
Рет қаралды 8 МЛН
Angular Mysql CRUD Tutorial, REST API Node & Typescript
3:09:43
小丑把天使丢游泳池里#short #angel #clown
00:15
Super Beauty team
Рет қаралды 42 МЛН
Meet the one boy from the Ronaldo edit in India
00:30
Younes Zarou
Рет қаралды 15 МЛН
Chat en TIEMPO REAL con Node.js, Socket.io, SQL, HTML y CSS
1:30:12
Nodejs y MongoDB Red Social, Proyecto desde Cero
5:09:34
Fazt
Рет қаралды 152 М.
Frontend vs Backend vs DevOps ¿Cual escoger?
14:07
Fazt
Рет қаралды 39 М.
MongoDB Curso, Introducción Practica a NoSQL
1:21:45
Fazt
Рет қаралды 452 М.
Angular Login - NodeJS Express TypeScript Sequelize MySQL y Jwt
3:26:12
Tomas Ruiz Diaz
Рет қаралды 31 М.
I built 10 web apps... with 10 different languages
14:23
Fireship
Рет қаралды 1,6 МЛН
Tu primer REST API usando Node.js, ¿Que es una REST API?
1:16:02
Fazt Code
Рет қаралды 346 М.
The Story of Next.js
12:13
uidotdev
Рет қаралды 564 М.
小丑把天使丢游泳池里#short #angel #clown
00:15
Super Beauty team
Рет қаралды 42 МЛН