I currently have a check I'm running to see if a username is taken or not. I am querying to see if the username has been taken, and if so provide a value to my errors object. I want to pass my errors defined within my if statement to the outer return statement. Is there a way to go about this?? Im unsure of what to do here.
exports.reduceUserDetails = data => {
  let errors = {}
  const userRef = db.collection('users').where('username', '==', data.username)
  userRef.get().then(snapshot => {
    if (!snapshot.empty) {
      errors.username = 'username taken'
    } else {
      console.log('im not taken')
    }
  })
  return {
    errors,
    valid: Object.keys(errors).length === 0 ? true : false
  }
}
here is where I'm using the reduce user details:
exports.profileUpdate = (req, res) => {
  let userDetails = req.body
  const { valid, errors } = reduceUserDetails(userDetails)
  if (!valid) return res.status(400).json(errors)
  let document = db
    .collection('users')
    .where('username', '==', req.user.username)
  document
    .get()
    .then(snapshot => {
      snapshot.forEach(doc => {
        const data = doc.id
        db.collection('users').doc(data).update(req.body)
      })
      res.json({ message: 'Updated Successfully' })
    })
    .catch(error => {
      console.error(error)
      return res.status(400).json({
        message: 'Cannot Update the value'
      })
    })
}
 
    