Exo*_*Exo 6 postgresql typescript typeorm nestjs
嘿嘿,
\n我正在尝试使用 NestJS + TypeORM 为某种类型的电子商务网站构建后端。
\n我需要我的订单和产品表之间的 am:n 关系。然而,由于我需要数据透视表中的一些自定义字段,我查找了 typeorms 文档,并且如上所述,我需要创建一个我完成的新实体。现在我在启动 NestJS 应用程序时遇到错误:
\nError: Entity metadata for Product#productToOrders was not found. Check if you specified a correct entity object and if it\'s connected in the connection options.\nRun Code Online (Sandbox Code Playgroud)\n我的产品.entity.ts:
\nError: Entity metadata for Product#productToOrders was not found. Check if you specified a correct entity object and if it\'s connected in the connection options.\nRun Code Online (Sandbox Code Playgroud)\n我的productToOrder.entity.ts
\nimport { BaseEntity, Column, Entity, OneToMany, PrimaryGeneratedColumn } from "typeorm";\nimport { ProductToOrder } from "./productToOrder.entity";\n\n@Entity()\nexport class Product extends BaseEntity{\n @PrimaryGeneratedColumn()\n id: number;\n \n @Column()\n name: string;\n \n @Column()\n description: string;\n \n @Column()\n price: number;\n\n @OneToMany(type => ProductToOrder, productToOrder => productToOrder.product)\n productToOrders: ProductToOrder[];\n}\nRun Code Online (Sandbox Code Playgroud)\n我的订单.entity.ts
\nimport { Order } from "src/order/order.entity";\nimport { BaseEntity, Column, Entity, ManyToOne, PrimaryGeneratedColumn } from "typeorm";\nimport { Product } from "./product.entity";\n\n@Entity()\nexport class ProductToOrder extends BaseEntity{\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column()\n amount: number;\n\n @ManyToOne(() => Product, product => product.productToOrders,{eager: false})\n product: Product;\n\n @ManyToOne(() => Order, order => order.productToOrders, {eager: false})\n order: Order;\n}\n\nRun Code Online (Sandbox Code Playgroud)\n我的目录结构:
\nsrc/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 order\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 order.entity.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 order.module.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 order.service.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 order.controller.ts\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 order.repository.ts\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 product\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 product.entity.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 product.module.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 product.service.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 product.controller.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 productToOrder.entity.ts <- i put the entity for the pivot table here, not sure if its right\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 product.repository.ts\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 xy\nRun Code Online (Sandbox Code Playgroud)\n我的app.module.ts
\nimport { User } from "src/auth/user.entity";\nimport { Product } from "src/product/product.entity";\nimport { ProductToOrder } from "src/product/productToOrder.entity";\nimport { BaseEntity, Column, Entity, JoinTable, ManyToMany, ManyToOne, OneToMany, PrimaryGeneratedColumn } from "typeorm";\n\n@Entity()\nexport class Order extends BaseEntity{\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column()\n ordernumber: number;\n\n @Column()\n totalprice: number;\n \n @ManyToOne(type => User, user => user.orders, {eager: false})\n user_id: User[];\n\n @OneToMany(() => ProductToOrder, productToOrder => productToOrder.order, {eager: true})\n productToOrders: ProductToOrder[];\n}\n\nRun Code Online (Sandbox Code Playgroud)\n我的 typeorm.config.ts
\nsrc/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 order\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 order.entity.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 order.module.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 order.service.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 order.controller.ts\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 order.repository.ts\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 product\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 product.entity.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 product.module.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 product.service.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 product.controller.ts\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 productToOrder.entity.ts <- i put the entity for the pivot table here, not sure if its right\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 product.repository.ts\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 xy\nRun Code Online (Sandbox Code Playgroud)\n如果我添加
\nimport { Module } from \'@nestjs/common\';\nimport { TypeOrmModule } from \'@nestjs/typeorm\';\nimport { AuthModule } from \'./auth/auth.module\';\nimport { typeOrmConfig } from \'./config/typeorm.config\';\nimport { ProductModule } from \'./product/product.module\';\nimport { OrderModule } from \'./order/order.module\';\n\n\n@Module({\n imports: [\n TypeOrmModule.forRoot(typeOrmConfig),\n AuthModule,\n ProductModule,\n OrderModule,\n ],\n controllers: [],\n providers: [],\n})\nexport class AppModule {}\n\nRun Code Online (Sandbox Code Playgroud)\n行到我的 typeorm.config.ts 并使用 npm run start:dev 启动应用程序,错误代码更改为
\n TypeError: metatype is not a constructor\nRun Code Online (Sandbox Code Playgroud)\n
在您的 TypeORM 配置中,您必须定义以下entities属性:
TypeOrmModule.forRoot({
// ...
entities: ['src/**/*.entity.ts']
})
Run Code Online (Sandbox Code Playgroud)
检查该模式是否也与您的新实体匹配。
| 归档时间: |
|
| 查看次数: |
18926 次 |
| 最近记录: |