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

How to fix 'Cannot read property 'joinColumns' of undefined' error in EntitySchema and Graphql

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

我不使用 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 的错误"Cannot read property 'joinColumns' of undefined"

您的 EntitySchema 中缺少两件事:您需要指定 JoinColumn 和 OneToMany 关系的反面。所以这应该有效:

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,
    },
  },
});