1

can you help me look at this code to find out where I am making it wrong ?

I have my mongoose schema that am referencing child. What I want is to create a user and embed his payment details as a reference. my current result now, allows me to create anew user and the problems comes from when I want to update the user schema with payment details. If I send a request in postman, the request keep on loading until I cancel it. and what happend is if I try to get the userInfo, I will see that the payment_Id is reference in the schema but I can called .populate method on the parent schema. below is the....

export const expoSignUp = async (req, res) => {
  const { firstname, lastname, middlename, username, email, phoneNo , password } = req.body

  try {
    const userReg = await Expo.findOne({ username })
    if (userReg) {
      res.status(403).json({ message: "Username already taken"})
    } else {
      const encryptPass = CryptoJS.AES.encrypt(password, 'secret key 123').toString();
      const userData = await Expo.create({
        firstname, lastname, middlename, username, email, phoneNo, password: encryptPass
      });
      const result = jwt.sign({firstname, lastname, middlename, username, email, phoneNo},"secrete", {expiresIn:"24"})
      res.status(200).json({ userData, result })
    }
  } catch (err) {
    res.status(500).json({ message: err.message });
  }
}


export const expoSignIn = async (req, res) => {
  const { password, email, username } = req.body;

  try {
    const userLogin = await Expo.findOne({ username })
    if (!userLogin) {
      res.status(401).json({ message: "username is incorrect"})
    } else {
      const decryptPass  = CryptoJS.AES.decrypt(userLogin.password, 'secret key 123');
      var originalPass = decryptPass.toString(CryptoJS.enc.Utf8);
      if (password !== originalPass) {
        res.status(403).json({ message: "Login credentials is incorrect" })
      } else {
        const result = jwt.sign({ username, email, _id: userLogin._id }, "secrete", { expiresIn: "24" });
        const {password, ...others} = userLogin._doc
      res.status(200).json({ others, result })
    }
  }
  } catch (error) {
    res.status(500).json({message: error.message})
  }
}


export const getAllExpoUsers = async (req, res) => {
  try {
    const getUsers = await Expo.find()
    res.status(200).json(getUsers)
  } catch (err) {
    res.status(err)
  }
}

export const paymentInfo = async (req, res) => {
  const {
    userId,
    tx_ref,
    amount,
    currency,
    payment_options,
    customer: {
      email,
      phonenumber,
      fullname,
    },
    customizations: {
      title,
      description,
      logo
    }
  } = req.body;


  try {
    const userPaymentInfo = await Payment.create({
      tx_ref,
      amount,
      currency,
      payment_options,
      customer: {
        email,
        phonenumber,
        fullname,
      },
      customizations: {
        title,
        description,
        logo
      }
    })
    const newPaymentInfo = await Expo.findById({ _id: userPayment })
    res.status(newPaymentInfo)
  } catch (error) {
    res.status(500).json({message:error.message})
  }
}
Ahmad Salihu
  • 55
  • 1
  • 6

0 Answers0