Estoy tratando de entender las devoluciones de llamada en mongoose. Realmente solo quiero aclarar mi comprensión para poder estar seguro de que estoy en el camino correcto.
Entiendo el uso de async/await para hacer consultas en mongodb usando mongoose. Por ejemplo, el siguiente código obtendrá un usuario de mi base de datos, suponiendo que mi modelo "Usuario" esté configurado correctamente.
const getUser = async () => { const user = await User.find({username: "John"}) return user }Aquí está mi problema. Estoy trabajando en el proyecto odin y encontré una sección donde se usan devoluciones de llamada en lugar de async/await. He leído parte de la documentación de la mangosta sobre el asunto sin suerte.
Aquí hay un ejemplo con el que estoy trabajando:
passport.use( new LocalStrategy((username, password, done) => { User.findOne({username: username}, (err, user) => { if (err) { return done(err) } if (!user) { return done(null, false, {message:"Incorrect Username"}) } if (user.password !== password) { return done(null, false, {message: "Incorrect password"}) } return done(null, user) }) }) )Entiendo la mayor parte de lo que está sucediendo aquí, pero no entiendo cómo esto puede funcionar sin el uso de async/await. Estoy mirando específicamente en la línea:
User.findOne({username: username}, (err, user) => {callback})Supongo que se consulta la base de datos y, si se encuentra el usuario, los datos de la consulta se almacenan en el parámetro "usuario".
Si la consulta falla y no se devuelven datos, el usuario se vuelve nulo y nuestro parámetro err contendrá un mensaje.
¿Es esto correcto?
Puedes usar un concepto simple
async getUserList(){ try{ const users = User.findOne({username: username}); return users; }catch(error){ throw error; } }función de llamada en cualquier lugar
console.log(getUserList());