typescript - TypeORM - findAll-metod för att hitta alla artiklar av en användare


Jag vill hitta alla artiklar från en användare från TypeORM-paketet.

I Sequelize har jag detta:

async findAllByUser(userUuid: string, findOptions: object): Promise<Article[]> {
    return await Article.findAll<Article>({
        include: [{
            model: User,
            where: {
                uuid: userUuid
            }
        }]
    });
}

Jag skulle vilja ha ett alternativ till TypeORM.

Svar #1

Du kan ansluta om relationen var definierad i modellen

export class Article {
    /// ... other columns

    @ManyToOne(type => Author, author => author.articles)
    author: Author;
}

Det finns två sätt att göra en sökning: find*-metoden eller QueryBuilder

// find*

createConnection(/*...*/).then(async connection => {

    /*...*/
    let articleRepository = connection.getRepository(Article);
    let articles = await articleRepository.find({ relations: ["author"] });

}).catch(error => console.log(error));
// Query Builder
const articles = await connection
    .getRepository(Article)
    .createQueryBuilder("article") 
    .leftJoinAndSelect("article.author", "user")
    .getMany();

Du kan läsa dokumentationen för mer detaljer

Relaterade artiklar