Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 使用typeorm和type graphql从数据库检索数据时出错_Postgresql_Typeorm_Apollo Server_Typegraphql - Fatal编程技术网

Postgresql 使用typeorm和type graphql从数据库检索数据时出错

Postgresql 使用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

我将类型graphql与typeorm、apollo server express和postgreSQL结合使用。我有一个用户和一个客户实体处于1:n关系,这意味着一个用户可以有多个客户

我可以很好地创建用户和客户,但是当尝试使用Apollo服务器检索与客户关联的用户时,我会收到一条错误消息,说明“对于不可为null的字段customer.user,无法返回null。”

当我检查数据库时,customer表上关联的用户id肯定不是空的(请参见附图)

有人知道我做错了什么吗

User.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;
        }
    }
....
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
用户
数据获取
客户

非常感谢,我会试试看。