es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

async/await permite mostrar datos en el ámbito global.

Esta es mi primera vez usando promesas y mongoose, y estoy tratando de guardar datos en una variable global para su uso posterior.

const getUser = async () => {
  let user 
  try {
    user = await clientModel.findOne({username: email})
    console.log(user) 
  } catch (e) {
    console.log(e)
  }
  return user
}

const filteredUser = getUser().then((value) => {
  return value
}).catch((e) => console.log(e))

console.log(filteredUser)

La consola muestra el contenido del usuario:

{
  _id: new ObjectId("61aa75c64e1526131d98f2a1"),
  username: 'paul@beatles.uk',
  chequing: null,
  saving: '1000022',
  __v: 0
}

Pero filteredUser sigue mostrando Promise { <pending> }.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual filteredUser está mostrando Promise { <pending> } es porque la función getUser() devuelve una promesa y filteredUser recibe la promesa pendiente en lugar del valor resuelto. Para acceder al valor resuelto, debes utilizar el método .then() en la promesa filteredUser.

    Por ejemplo:

    filteredUser.then((valor) => {
      console.log(valor);
    }).catch((e) => console.log(e));
    

    Esto registrará en la consola el valor resuelto de la función getUser() cuando esté disponible. Alternativamente, también puedes utilizar await para obtener directamente el valor resuelto:

    const filteredUser = await getUser();
    console.log(filteredUser);
    

    Nota: await solo debe ser utilizado dentro de una función async.

Comments are closed.