如何解决如何根据其关系过滤字段的查找方法?
我的应用程序的结构是:
- 联系人
- 群组
- 车道(属于组)
- GroupContacts(加入表以将联系人分配给组并分配通道)
我的实体是:
lane.entity.ts
import {
Entity,Column,PrimaryGeneratedColumn,ManyToOne,Unique,OnetoMany,} from 'typeorm';
import { Group } from './group.entity';
import { GroupContact } from './groupcontact.entity';
@Entity('lanes')
@Unique('UQ_NAMES',['group','name'])
export class Lane {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
sequence: number;
@Column({ nullable: false,default: 30 })
updateFrequencyDays: number;
@Column({
nullable: false,default: () => 'CURRENT_TIMESTAMP',type: 'timestamp',})
createdAt: Date;
@ManyToOne(
type => Group,group => group.lanes,)
group: Group;
@OnetoMany(
type => GroupContact,groupcontact => groupcontact.lane,)
groupContacts: GroupContact[];
}
groupcontact.entity.ts
import { Contact } from '../contacts/contact.entity';
import { Entity,PrimaryColumn,JoinColumn } from 'typeorm';
import { Group } from './group.entity';
import { Lane } from './lane.entity';
@Entity('groups_contacts')
export class GroupContact {
@PrimaryColumn()
groupId: number;
@PrimaryColumn()
contactId: number;
@Column()
laneId: number;
@Column({
nullable: false,group => group.contactConnection,)
@JoinColumn({ name: 'groupId' })
group: Group;
@ManyToOne(
type => Contact,contact => contact.groupConnection,)
@JoinColumn({ name: 'contactId' })
contact: Contact;
@ManyToOne(
type => Lane,lane => lane.groupContacts,)
@JoinColumn({ name: 'laneId' })
lane: Lane;
}
contact.entity.ts
import { Group } from 'src/groups/group.entity';
import { GroupContact } from '../groups/groupcontact.entity';
import {
Entity,JoinTable,ManyToMany,} from 'typeorm';
@Entity('contacts')
export class Contact {
@PrimaryGeneratedColumn()
public id: number;
@Column()
public firstName: string;
@Column()
public lastName: string;
@Column({
nullable: false,})
public createdAt: Date;
@OnetoMany(
type => GroupContact,gc => gc.contact,)
groupConnection: GroupContact[];
}
我要做的是尝试返回属于特定组的所有联系人。但是在返回这些联系人时,我还想返回 groupConnection 对象。
这是我使用的代码:
async getContacts(groupId) {
const group = await this.findOneByIdOrThrow(groupId);
const contacts = await this.contactRepository.find({
//where: { groupConnection: { groupId: groupId } },relations: ['groupConnection'],});
return contacts;
}
到目前为止,我是否能够返回我想要的,这是一个联系人列表以及他们的关系。但我还没有找到一种方法来过滤这些结果以仅检索属于特定 groupId 的那些。
Where 子句已注释。
我该如何过滤?
解决方法
我可以使用 QueryBuilder 修复它
<img />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。