Postgresql 使用typeorm和type graphql从数据库检索数据时出错
我将类型graphql与typeorm、apollo server express和postgreSQL结合使用。我有一个用户和一个客户实体处于1:n关系,这意味着一个用户可以有多个客户 我可以很好地创建用户和客户,但是当尝试使用Apollo服务器检索与客户关联的用户时,我会收到一条错误消息,说明“对于不可为null的字段customer.user,无法返回null。” 当我检查数据库时,customer表上关联的用户id肯定不是空的(请参见附图) 有人知道我做错了什么吗 User.tsPostgresql 使用typeorm和type graphql从数据库检索数据时出错,postgresql,typeorm,apollo-server,typegraphql,Postgresql,Typeorm,Apollo Server,Typegraphql,我将类型graphql与typeorm、apollo server express和postgreSQL结合使用。我有一个用户和一个客户实体处于1:n关系,这意味着一个用户可以有多个客户 我可以很好地创建用户和客户,但是当尝试使用Apollo服务器检索与客户关联的用户时,我会收到一条错误消息,说明“对于不可为null的字段customer.user,无法返回null。” 当我检查数据库时,customer表上关联的用户id肯定不是空的(请参见附图) 有人知道我做错了什么吗 User.ts im
import { Field, ID, ObjectType } from "type-graphql";
import { BaseEntity, Column, Entity, OneToMany, PrimaryGeneratedColumn } from "typeorm";
import { Customer } from "./Customer";
@ObjectType()
@Entity("users")
export class User extends BaseEntity {
@Field(() => ID)
@PrimaryGeneratedColumn("uuid")
userId: string;
@Field()
@Column({ unique: true })
email: string;
@Column({ nullable: false })
password: string;
@Field(() => Customer)
@OneToMany(() => Customer, customer => customer.user)
customers: Customer[]
}
import { Field, ID, ObjectType } from "type-graphql";
import { BaseEntity, Column, Entity, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
import { User } from "./User";
@ObjectType()
@Entity("customers")
export class Customer extends BaseEntity {
@Field(() => ID)
@PrimaryGeneratedColumn("uuid")
customerId: string;
@Field()
@Column()
customerName: string;
@Field(() => User)
@ManyToOne(() => User, user => user.customers)
user: User;
}
export class CustomerResolver {
@Query(() => [Customer])
async customers():Promise<Customer[]> {
try {
return await Customer.find();
} catch (error) {
console.log(error);
return error;
}
}
....
Customer.ts
import { Field, ID, ObjectType } from "type-graphql";
import { BaseEntity, Column, Entity, OneToMany, PrimaryGeneratedColumn } from "typeorm";
import { Customer } from "./Customer";
@ObjectType()
@Entity("users")
export class User extends BaseEntity {
@Field(() => ID)
@PrimaryGeneratedColumn("uuid")
userId: string;
@Field()
@Column({ unique: true })
email: string;
@Column({ nullable: false })
password: string;
@Field(() => Customer)
@OneToMany(() => Customer, customer => customer.user)
customers: Customer[]
}
import { Field, ID, ObjectType } from "type-graphql";
import { BaseEntity, Column, Entity, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
import { User } from "./User";
@ObjectType()
@Entity("customers")
export class Customer extends BaseEntity {
@Field(() => ID)
@PrimaryGeneratedColumn("uuid")
customerId: string;
@Field()
@Column()
customerName: string;
@Field(() => User)
@ManyToOne(() => User, user => user.customers)
user: User;
}
export class CustomerResolver {
@Query(() => [Customer])
async customers():Promise<Customer[]> {
try {
return await Customer.find();
} catch (error) {
console.log(error);
return error;
}
}
....
CustomerResolver.ts
import { Field, ID, ObjectType } from "type-graphql";
import { BaseEntity, Column, Entity, OneToMany, PrimaryGeneratedColumn } from "typeorm";
import { Customer } from "./Customer";
@ObjectType()
@Entity("users")
export class User extends BaseEntity {
@Field(() => ID)
@PrimaryGeneratedColumn("uuid")
userId: string;
@Field()
@Column({ unique: true })
email: string;
@Column({ nullable: false })
password: string;
@Field(() => Customer)
@OneToMany(() => Customer, customer => customer.user)
customers: Customer[]
}
import { Field, ID, ObjectType } from "type-graphql";
import { BaseEntity, Column, Entity, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
import { User } from "./User";
@ObjectType()
@Entity("customers")
export class Customer extends BaseEntity {
@Field(() => ID)
@PrimaryGeneratedColumn("uuid")
customerId: string;
@Field()
@Column()
customerName: string;
@Field(() => User)
@ManyToOne(() => User, user => user.customers)
user: User;
}
export class CustomerResolver {
@Query(() => [Customer])
async customers():Promise<Customer[]> {
try {
return await Customer.find();
} catch (error) {
console.log(error);
return error;
}
}
....
导出类CustomerResolver{
@查询(()=>[客户])
异步客户():承诺{
试一试{
返回等待客户。查找();
}捕获(错误){
console.log(错误);
返回误差;
}
}
....
设置/版本
- 节点:v14.17.0
- “阿波罗服务器快车”:“^2.24.0”
- “类型图形QL”:“^1.1.1”
- “typeorm”:“0.2.32”
- postgreSQL:13.2
查找操作,如下所示:
return Customer.find({
关系:[“用户”]
});
您应该编写一个@FieldResolver
,它将根据root用户
数据获取客户
。
非常感谢,我会试试看。