Делаю свой псевдо движок для магазина. В каждом магазине есть товары и пользователи, которые могут выставлять эти товары или покупать. Как мне сделать связь между пользователем, который выложил товар, и товаром?
Понимаю, что есть всякие @HasOne, @ForeignKey и так далее, но не понимаю как их вообще использовать и как потом изменять массив товаров у юзера.
Модель товара.
import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Model, PrimaryKey, Table, UpdatedAt } from "sequelize-typescript";
import { User } from "./user.model";
@Table({tableName:'goods'})
export class Goods extends Model<Goods>{
@PrimaryKey
@Column
id: string;
@AllowNull(false)
@Column
title: string;
@AllowNull(false)
@Column
category: string;
@AllowNull(false)
@Column(DataType.JSON)
info: any
@AllowNull(false)
@Column
price: number;
@AllowNull(false)
@Column
amount: number;
@ForeignKey(() => User)
@Column
userId: any;
@BelongsTo(() => User)
user: User;
@CreatedAt
@Column
createdAt: Date;
@UpdatedAt
@Column
updatedAt: Date;
}
Модель пользователя.
import { Column, CreatedAt, DataType, HasMany, Model, PrimaryKey, Table, UpdatedAt } from "sequelize-typescript";
import { Goods } from "./goods.model";
@Table({tableName:'users'})
export class User extends Model<User>{
@PrimaryKey
@Column
id: string;
@Column
username: string;
@Column
email: string;
@Column(DataType.STRING(255))
password: string;
@Column
role: string;
@Column
balance: number;
@Column(DataType.ARRAY(DataType.JSON))
purchasedGoods: any
@HasMany(()=> Goods)
myGoods: Goods[]
@CreatedAt
@Column
createdAt: Date;
@UpdatedAt
@Column
updatedAt: Date;
}