首页 > 解决方案 > 错误:添加多对多关系后未找到对象元数据

问题描述

我需要为多对多关系添加其他属性,我自己创建了一个新实体,如文档中所示。

https://github.com/typeorm/typeorm/blob/master/docs/many-to-many-relations.md#many-to-many-relations-with-custom-properties

它是用户实体。

import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm';
import { ShareTask } from './../../share-taks/entity/share-taks.entity';

@Entity('users')
export class User {
    @PrimaryGeneratedColumn()
    public id: number;

    @Column({ type: 'varchar', nullable: false })
    public email: string;

    @Column({ type: 'varchar', nullable: false })
    public password: string;

    @OneToMany(() => ShareTask, (shareTask: ShareTask) => shareTask.user)
    public shareTask: ShareTask[];
}

它是任务实体。

import { Entity, Column, PrimaryGeneratedColumn, OneToMany } from 'typeorm';
import { ShareTaks } from './../../share-taks/entity/share-taks.entity';

@Entity('tasks')
export class Taks {
    @PrimaryGeneratedColumn()
    public id: number;

    @Column({ type: 'varchar', nullable: false, length: 50 })
    public title: string;

    @OneToMany(() => ShareTaks, (shareTaks: ShareTaks) => shareTaks.taks)
    public shareTaks: ShareTaks[];    
}

它是 ormconfig.json。

{
    "type": "mysql",
    "host": "localhost",
    "port": 3306,
    "username": "root",
    "password": "7047",
    "database": "db",
    "entities": ["dist/**/*.entity{.ts,.js}"],
    "synchronize": true
}

它是 ShareTaks 实体。

import { Entity, PrimaryGeneratedColumn, Column, ManyToOne } from 'typeorm';
import { User } from './../../users/entity/user.entity';
import { Taks } from './../../taks/entity/taks.entity';

@Entity('shareTasks')
export class shareTask {
    @PrimaryGeneratedColumn()
    public id: number;

    @Column({ type: 'integer', nullable: false })
    public taskId: number;

    @Column({ type: 'integer', nullable: false })
    public userId: number;

    @ManyToOne(() => (task: Task) => task.shareTask, { cascade: ['insert', 'update', 'remove'] })
    public task: Task;

    @ManyToOne(() => (user: User) => user.shareTask, { cascade: ['insert', 'update', 'remove'] })
    public user: User;
}

在我建立多对多关系之前,一切都很顺利。当我添加多对多关系时,出现错误。

错误:未找到 ShareTask#task 的实体元数据。检查您是否指定了正确的实体对象,以及它是否在连接选项中连接。

由于我得到一个错误,我无法理解。

我找到了一些问题的答案,但它们没有帮助我。

找不到 Role#users 的实体元数据

https://github.com/typeorm/typeorm/issues/420

标签: typeorm

解决方案


该错误很可能是由您在 ormconfig 文件中的实体中提供的路径引起的。尝试将其更改为当前目录的相对路径,例如

"entities": [__dirname + "/../**/*.entity{.ts,.js}"]

推荐阅读