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:
- 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"
}
}
- 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