typescript - Problem med att bevara entitet med relation


Jag använder nestjs, typeorm och nestjsx/crud för att skapa API-endpoints.

Jag har en användarentitet definierad på följande sätt:

@Entity({
    name: 'users'
})

export class User extends CommonEntity {

    @Column({ length: 104, unique: true })
    email: string;
    .
    .
    .

    @OneToOne(type => Role, role => role.user, { cascade: true, lazy: true })
    @JoinColumn()
    role: Role; //this creates a roleId column in user table
}

och en rollentitet:

@Entity({
    name: 'roles'
})

export class Role extends CommonEntity {

    @OneToOne(type => User, user => user.role)
    user: User;

    @Column({ length: 52 })
    name: string;

    @Column({ type: 'text' })
    policy: string;

}

Hur kan en ny användare (med en roll) skapas via RESTful API med en enda förfrågan?

Jag har försökt att POSTa följande utan framgång:

  1. nedanstående ger ett fel om dubblettpost. Tydligen försöker det skapa en ny rollpost
{
  "email": "[email ",
  "role": {
    "id": "1f07f012-9391-4b5f-b6d3-574c58f4e046"
  }
}
  1. roleId ignoreras, inget läggs till i databasen
{
  "email": "[email ",
  "roleId": "1f07f012-9391-4b5f-b6d3-574c58f4e046"
}

Svar #1

Det kommer alltid att påstå att du har en duplicerad eftersom det är en OneToOne-relation, du behöver använda en ManyToMany-relation i vilken ManyToMany-relationen är unik med ett sammansatt Id med användar-Id och roll-Id