gpt4 book ai didi

sql - Typeorm - 通过多对多关系查找条目

转载 作者:行者123 更新时间:2023-12-05 02:58:36 24 4
gpt4 key购买 nike

我正在将 Nestjs 与 Typeorm 和 Mysql 一起使用,但我想不出一种通过多对多关系过滤条目的好方法。

我有这两个实体:

集团实体:

@Entity({ name: 'groups' })
export class Group {
@ManyToMany(() => Tag, { eager: true })
@JoinTable()
tags: Tag[];
}

标记实体

@Entity({ name: 'tags' })
export class Tag {
@Column()
@Index({ unique: true })
tag?: string;
}

并希望搜索所有具有特定文本标签的组。

即。所有具有 tag.tag "sport"

的组

试过这段代码:

const args = {
where: [
{
'tags': In([Like(`%sport%`)]),
}
],
relations: ['tags'], // TAGS
take: filter.take,
skip: filter.skip,
order: filter.order
};

return super.findAll(args);

但是好像不行..

任何帮助都会很棒!

最佳答案

return find({
where: {
tags: {
tag: Like(`%sport%`),
},
},
relations: ['tags'],
});

几乎,typeorm 从这样的关系中接受一个 ObjectLiteral 或 keyof typeof 标签:

FindConditions<T>: {
where: {
[s: keyof typeof T]: any,
},
}

这还不完全是,但这是总的要点。如果 keyof T 是一个关系,那么 any 几乎无论如何都会被替换为 keyof relation

这是 findConditions 的完整类型 https://github.com/typeorm/typeorm/blob/master/src/find-options/FindConditions.ts

关于sql - Typeorm - 通过多对多关系查找条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58767736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com