2 votes

la fonction retourne l'objet sous forme de promesse { pending }

Nous utilisons l'API Twilio pour envoyer des SMS, puis la fonction personnalisée vérifie l'OTP. Nous voulons que l'identifiant de l'utilisateur qui s'est connecté avec un texte fort le numéro de téléphone unique ici est notre fonction principale.

const donorLogin = (req, res) => {
donorCredentials
 .findOne({ mobileNo: req.body.phone })
 .then((user) => {
   if (!user) {
     return res.status(401).json({
       success: false,
       msg: There is no account of ${req.body.phone},
     });
   }

   // Function defined at bottom of app.js
   const isValid = validPassword(req.body.password, user.hash, user.salt);

   if (isValid) {

     const accessToken = jwt.sign(
       {
         mobileNo: user.mobileNo,
       },
       JWT_AUTH_TOKEN,
       {
         expiresIn: "1d",
       }
     );

     res
       .status(200)

       .send(getUser(req.body.phone));
   } else {
     res.status(401).json({ success: false, msg: "Wrong Password" });
   }
 })
 .catch((err) => {
   res.status(400).send({ err: err });
 });
};

async function getUser(phone) {
  try {
    const userInfo= await Donor.find({ mobileNo: phone });
    // console.log(userInfo[0]);
    // let data = userInfo[0];
    return JSON.stringify(userInfo[0]) ;
  }
  catch (err) {
    console.log(err);
    res.status(500).send(err);
  }
};

C'est la fonction du pilote où nous obtenons l'objet utilisateur avec toutes les informations d'identification que nous passons à res.send qui retourne un objet nul. Lorsque nous enregistrons l'objet dans la fonction valide principale, il est enregistré comme une promesse { pending }.

2voto

pzaenger Points 2990

Vous mélangez les callbacks et l'asynchronisme. Choisis la seconde :

const donorLogin = async (req, res) => {
  try {
    // await added, no callback
    const user = await donorCredentials.findOne({ mobileNo: req.body.phone });

    if (!user) {
      return res.status(401).json({
        success: false,
        msg: There is no account of ${req.body.phone},
      });
    }

    const isValid = validPassword(req.body.password, user.hash, user.salt);

    if (isValid) {
      const accessToken = jwt.sign({ mobileNo: user.mobileNo }, JWT_AUTH_TOKEN, { expiresIn: "1d" });

      // await added
      res.status(200).send(await getUser(req.body.phone));
    } else {

      // ...

    }
  } catch (e) {

    // ...

  }
};

Edita:

Comment enregistrer l'appel de fonction ? En utilisant await ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X