如何从typeorm插入多对多数据?

时间:2018-11-02 04:47:38

标签: javascript node.js typeorm

如果我是Andrés的用户,并且我想与我的同事José,Maria和Martin创建一个新项目。所以,我有这个逻辑:

一个项目有很多用户,例如:

enter image description here

用户有很多项目,例如:

enter image description here

//此文件将表示“新项目”,在这种情况下,它需要标题,名称,主体,并且与实体用户之间存在许多关系。

import {
    Entity,
    BaseEntity,
    PrimaryGeneratedColumn,
    Column,
    ManyToMany,
    JoinTable
} from "typeorm";

import { User } from "./User";

@Entity()
export class Matrix extends BaseEntity {
    @PrimaryGeneratedColumn("uuid")
    id: string;

    @Column("varchar", { length: 100 })
    title: string;

    @Column("varchar", { length: 255 })
    name: string;

    @Column("json", { nullable: true })
    body: object;

    @ManyToMany(() => User)
    @JoinTable({ name: "coworkers" })
    coworkers: User[];
}

//该用户实体仅具有每个普通用户的基本信息...

import * as bcrypt from "bcryptjs";
import {
    Entity,
    BaseEntity,
    PrimaryGeneratedColumn,
    Column,
    BeforeInsert
} from "typeorm";

@Entity()
export class User extends BaseEntity {
    @PrimaryGeneratedColumn("uuid")
    id: string;

    @Column("varchar", { length: 255 })
    name: string;

    @Column("varchar", { length: 255 })
    lastname: string;

    @Column("varchar", { length: 255, unique: true })
    email: string;

    @Column("text")
    password: string;

    @Column({ default: false })
    confirmed: boolean;

    @BeforeInsert()
    async hashPassword() {
        this.password = await bcrypt.hash(this.password, 10);
    }
}

因此,如果要创建一个名为“Análisisempresas x”的新项目,请使用以下查询:

    const matrix = new Matrix();
    matrix.coworkers = ["1", "2", "3"]; // Array of coworkers ids
    matrix.title = "Análisis empresas x"; // What name has the matrix.
    matrix.name = "Matrix d.o.f.a"; // What type of matrix is.
    await matrix.save();

该代码完美地创建了矩阵,但是与“同事”表上的用户的关系是“很多对很多” ...

这是我正在使用的完整代码(code)

这是实体用户(code)

这是实体矩阵(code)

请帮助:)

0 个答案:

没有答案