Tengo una entidad typeorm de la siguiente forma:
@Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column() firstName: string; @Column() lastName: string; @Column() isActive: boolean; }Ahora estoy buscando obtener los campos de instancia de esta clase de entidad en una matriz, como a continuación:
['id', 'firstName', 'lastName', 'isActive']¿Cómo puedo lograr eso?
Intenté lo siguiente pero sin ayuda:
class Me extends User{ constructor() { super() } } const me = new Me() console.log(Object.keys(me)) // []Dé valores iniciales en su clase de Usuario a las propiedades. Son nulos ahora, Object.keys no los enumerará. Prueba esto:
@Entity() export class User { @PrimaryGeneratedColumn() id: number = 0; @Column() firstName: string = ""; @Column() lastName: string = ""; @Column() isActive: boolean = false; }La solución alternativa es cuando llena los attrs manualmente:
const user = new User(); user.id = 0; user.firstName = ""; user.lastName = ""; user.isActive = false;Es posible que puedas hacer algo como esto:
const userProps = getConnection() .getMetadata(User) .ownColumns .map(column => column.propertyName); Esto significa que obtiene metadatos de una entidad si toma la función de clase (constructor AKA) y usa el método .getMetadata en la conexión de base de datos.
Referencia: