TypeORM: Actualización de datos (con relaciones) a través de la API Repositorio

votos
1

Tengo dos entidades (tablas): los usuarios y los roles . Existe una relación muchos-a-uno entre ambas entidades (un usuario puede tener un rol, las funciones se pueden relacionar con muchos usuarios). Ahora quiero actualizar la entidad de usuario (que también puede incluir una actualización de la función del usuario) por excuting siguientes comandos:

const user = await this.userRepository.preload(partialUser);
await this.userRepository.save(user);
return user;

Comportamiento esperado

  1. partialUser (Propiedades de usuario para actualizar) se combina con los datos de usuario de la base de datos que incluye role
  2. user (Objeto fusionado) se guarda en la base de datos
  3. nuevo objeto usuario es devuelto a la persona que llama (incluido el papel)

Lo que pasa

  1. el usuario se fusiona, pero roleno se ha cargado (pero si añado una propiedad secundaria rolea partialUser, que está bien)
  2. user(objeto fusionado) se guarda en la base de datos (también con role, si era parte de partialUser)
  3. nuevo objeto de usuario se devuelve, pero le falta papel, si no se ha actualizado a través de papel partialUser

Pregunta

¿Por qué roleno se carga a través preloadni returndespués save? Se repositorios TypeORM no están bien hechas para las relaciones o lo uso de forma incorrecta?

mi solución

Por el momento tengo que leer toda la userentidad de nuevo después de guardarlo, para que el objeto completo (incluyendo la rolerelación) puede ser devuelto a la persona que llama. Creo que eso no es muy eficiente. ¿Se pretende de esta manera?

const user = await this.userRepository.preload(partialUser);
await this.userRepository.save(user);

return this.userRepository.findOne({
  where: { id: user.id },
  relations: ['role']
});
Publicado el 20/10/2018 a las 10:46
fuente por usuario
En otros idiomas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more