Tengo el siguiente método en nestjs .
async findOne(userId: string) { const user = await this.userRepository.find({userId}); if (user) { throw new NotFoundException(`User does not exist`); } return user; } este método devuelve una array of object . si el valor no se encuentra en la base de datos, devuelve [{}] . Necesito lanzar una excepción cuando devuelve una empty array quiero decir [{}] . para eso necesito poner condition en if block cuando escribo user , o user==null o user.length==o en if block , en todo caso no va dentro del if
¿Qué modificación debo hacer en el bloque if ?
Me preguntaba por qué realmente necesitas usar el método de find .
Está tratando de obtener un usuario basado en el userId de usuario en el repositorio de usuarios, ¿no se supone que el ID de usuario es único?
Si es único, obtendrá una matriz vacía como describió o con solo un objeto en ella. No estoy seguro de qué base de datos está utilizando, pero en cualquier caso, el método findOne debería estar allí.
Si esto se aplica a su caso, findOne debería hacer el truco
const user = await this.userRepository.findOne({ userId }); if (!user) throw new NotFoundException(`User does not exist`); return user; O si tiene que usar find y desea que la declaración if sea más legible, sugiero usar Ramda , lodash o cualquier biblioteca similar para mantenerlo más limpio.
Con Ramda puedes hacer lo siguiente
const [firstUser = {}, ...others] = await this.userRepository.find({ userId }); if(R.isEmpty(firstUser)) throw new NotFoundException(`User does not exist`); return [firstUser, ...others]; Supongo que los datos obtenidos en función del userId de usuario son solo un registro, por lo que creo que puede usarlos así
const [user = {}] = await this.userRepository.find({ userId }); if(R.isEmpty(user)) throw new NotFoundException(`User does not exist`); return user;Parece que necesita verificar si user es una matriz con longitud = 1 donde el primer elemento es un objeto vacío. Puedes hacer algo como esto:
const user = await this.userRepository.find({ userId }); if ( !user || user.length === 0 || (user.length === 1 && Object.keys(user[0]).length === 0) ) { throw new NotFoundException(`User does not exist`); } return user; Deberá buscar en su función userRepositoy.find() para ver si hay otros valores posibles que podría devolver. Según su descripción, devuelve una matriz de usuarios o una matriz con un solo objeto vacío. Sin embargo, puede haber otros casos de falla donde devuelve algo diferente. Esa parte depende de usted para asegurarse de manejar esos casos correctamente.