如何修复EntitySchema和Graphql中的“无法读取未定义的属性'joinColumns'的未定义”错误

时间:2019-08-30 07:00:21

标签: graphql typeorm

我想在用户与关键字表之间建立一对多关系,在关键字表中建立多对一关系。

我不使用TypeScript,因为我已经使用了Typeorm的EntitySchema。

这是我的实体:

import { EntitySchema } from 'typeorm';

export default new EntitySchema({
  name: 'User',
  columns: {
    id: {
      primary: true,
      type: Number,
      generated: true,
    },
    firstname: {
      type: 'varchar',
    },
    lastname: {
      type: 'varchar',
    },
    email: {
      type: 'varchar',
      default: null,
    },
    auth: {
      type: 'varchar',
      nullable: true,
    },
  },
  relations: {
    keywords: {
      target: 'Keyword',
      type: 'one-to-many',
    },
  },
});
import { EntitySchema } from 'typeorm';

export default new EntitySchema({
  name: 'Keyword',
  columns: {
    id: {
      primary: true,
      type: Number,
      generated: true,
    },
    name: {
      type: 'varchar',
    },
    created_at: {
      type: Date,
    },
  },
  relations: {
    user: {
      target: 'User',
      type: 'many-to-one',
    },
  },
});

来自GraphQL的错误“无法读取未定义的属性'joinColumns'”

1 个答案:

答案 0 :(得分:1)

在EntitySchema中缺少两件事:您需要为OneToMany关系指定JoinColumn和反面。所以这应该工作:

export default new EntitySchema({
  name: 'User',
  ...
  relations: {
    keywords: {
      target: 'Keyword',
      type: 'one-to-many',
      inverseSide: 'user',
    },
  },
});

export default new EntitySchema({
  name: 'Keyword',
  ...
  relations: {
    user: {
      target: 'User',
      type: 'many-to-one',
      joinColumn: true,
    },
  },
});