Search code examples
javascriptnode.jsnestjstypeorm

typeorm get repository from name


To create REST API for any entity. Can I use table name instead of Entity for queryBuilder?

const repository = getRepository("Table_Name"); // instead of Entity, I want use string `Any Table name`.
repository.createQueryBuilder( ...  )
    .leftJoin(['TableA', 'TableB'])
    .orderBy("TableA.name")
    .offset(5)
    .limit(10);

Solution

  • I think you are looking to find the correct entity name given that you already know the name of the database table.

    Assuming you have only one database to connect to, you can do something like this:

    const tableName = "Table_Name";
    const entityMetadata = getConnection().entityMetadatas.find((metadata) => metadata.tableName === tableName);
    const repository = getRepository(entityMetadata.name);
    

    For your TableA and TableB, I guess you can follow the same logic.