无法使用GraphQl和TypeORM为不可为空的字段Message.sender返回null

时间:2019-05-17 04:55:56

标签: reactjs graphql apollo typeorm

所以我试图弄清楚为什么我的查询最终以:

{
  "errors": [
    {
      "message": "Cannot return null for non-nullable field Message.sender.",
    }
    ...
}

这是我的实体

@Entity()
export class Message extends BaseEntity {
    @PrimaryGeneratedColumn("uuid")
    id: string;

    @Column("text")
    content: string;

    @CreateDateColumn()
    created_at: string;

    // @ts-ignore
    @ManyToOne(type => User, user => user.messages)
    sender: User;
}

我的解析器出现了:

allMessagesOfProject: async (_, { projectId }, __) => {
    const project = await Project.findOne({
        relations: ["messages"],
        where: { id: projectId }
    });
    if (project) {
        const messages = project.messages;
        return messages.reverse();
    }
    return null;
},

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

好吧,我刚刚发现TypeORM通过不允许访问子级(如果不够精确)来增加一层安全性,因此您必须使用eager选项。

@ManyToOne(type => User, user => user.messages, {eager: true})
sender: User;

希望这会在以后对某人有所帮助。