typescript - Hur kan vi filtrera sökresultat beroende på relationsvärden?
Jag använder NestJS med PostgreSQL.
Jag har en enkel OneToOne-relation mellan två repositorys: Address och Warehouse.
Jag försöker hämta alla adresser som inte har en lagerrelation. Jag har försökt använda Repositoriehanteraren istället för QueryBuilder.
Här är mina enheter:
@Entity()
export class Address {
[key: string]: string | string[] | number | Record<string, unknown> | Date;
@PrimaryGeneratedColumn({
type: "bigint",
name: "address_id",
})
id: string;
@Column({
nullable: true,
})
customerId?: string;
@Field()
@OneToOne(() => Warehouse, (warehouse: Warehouse) => warehouse.address, { nullable: true })
warehouse?: string | null;
}
@Entity()
export class Warehouse {
@PrimaryGeneratedColumn({
type: "bigint",
})
id: string;
@Field()
@Column()
name: string;
@Field()
@Column({ nullable: false })
merchantId: string;
@OneToOne(() => Address, { eager: true, cascade: true })
@JoinColumn()
address: Address;
}
Försöker den här koden:
findAllAddresses(@Query() query: any) {
return this.addressesService.find({
relations: {
warehouse: true
},
where: {
warehouse: null
}
});
}
Returnerar alla mina resultat. Även de med fältet warehouse: null.
Jag hittade och försökte med
where: {
warehouse: IsNull()
}
Men min fråga ger faktiskt ett fel (inte i TS):
Denna relation stöds inte av den angivna sökoperatorn
Hur kan jag filtrera på detta fält/relation?
Svar #1
Försöker den här koden:
where: { warehouse: { id: ? } }