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

Jul*_*B90 2 graphql typeorm

我希望在用户与关键字表中具有一对多关系,在关键字表中具有多对一关系。

\n\n

我不\xc2\xb4t 使用 TypeScript,因为我使用了 Typeorm 的 EntitySchema。

\n\n

这是我的实体:

\n\n
import { EntitySchema } from \'typeorm\';\n\nexport default new EntitySchema({\n  name: \'User\',\n  columns: {\n    id: {\n      primary: true,\n      type: Number,\n      generated: true,\n    },\n    firstname: {\n      type: \'varchar\',\n    },\n    lastname: {\n      type: \'varchar\',\n    },\n    email: {\n      type: \'varchar\',\n      default: null,\n    },\n    auth: {\n      type: \'varchar\',\n      nullable: true,\n    },\n  },\n  relations: {\n    keywords: {\n      target: \'Keyword\',\n      type: \'one-to-many\',\n    },\n  },\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n
import { EntitySchema } from \'typeorm\';\n\nexport default new EntitySchema({\n  name: \'Keyword\',\n  columns: {\n    id: {\n      primary: true,\n      type: Number,\n      generated: true,\n    },\n    name: {\n      type: \'varchar\',\n    },\n    created_at: {\n      type: Date,\n    },\n  },\n  relations: {\n    user: {\n      target: \'User\',\n      type: \'many-to-one\',\n    },\n  },\n});\n\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n

Jud*_*dge 5

您的 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,
    },
  },
});
Run Code Online (Sandbox Code Playgroud)