Как мне ссылаться на несколько моделей из одного поля с помощью sequelize-typcript? - PullRequest
0 голосов
/ 15 октября 2018

Я хочу иметь несколько Address для любого из Person, Location или Place и, возможно, других типов объектов в будущем.я хотел бы иметь одно поле в моей Address модели, которое указывает на id любой вещи, к которой относится этот адрес, без необходимости иметь personId, locationId и placeId и т. д. ... на каждом Address когда они будут использовать только один из них.

моя структура таблицы выглядит следующим образом:

addresses.entityId => people.id | locations.id | places.id

как мне смоделировать это с @ForeignKey в sequelize-typcript ?

мои модели выглядят так:

@Table
class Address extends Model<Address> {
  @Column({
    type: DataType.UUID,
    allowNull: false,
    primaryKey: true,
    unique: true,
    defaultValue: DataType.UUIDV4
  })
  id: string;

  @ForeignKey // ... ??
  entityId: string;
}

@Table
class Person extends Model<Person> {
  @Column({
    type: DataType.UUID,
    allowNull: false,
    primaryKey: true,
    unique: true,
    defaultValue: DataType.UUIDV4
  })
  id: string;
}

@Table
class Location extends Model<Location> {
  @Column({
    type: DataType.UUID,
    allowNull: false,
    primaryKey: true,
    unique: true,
    defaultValue: DataType.UUIDV4
  })
  id: string;
}

@Table
class Place extends Model<Place> {
  @Column({
    type: DataType.UUID,
    allowNull: false,
    primaryKey: true,
    unique: true,
    defaultValue: DataType.UUIDV4
  })
  id: string;
}

1 Ответ

0 голосов
/ 27 ноября 2018

Пользовательский декоратор может быть задан несколько раз в этом случае Sequelize Typescript, так что если вы хотите «Переместить столбец к нескольким моделям», вы можете дать @ForeignKey несколько раз, как этот фрагмент, который я дал.Вы можете сделать что-то вроде этого:

@Table
class Address extends Model<Address> {
    @Column({
      type: DataType.UUID,
      allowNull: false,
      primaryKey: true,
      unique: true,
      defaultValue: DataType.UUIDV4
    })
    id: string;
    @ForeignKey(() => Person)
    @ForeignKey(() => Location)
    @ForeignKey(() => Place)
    @Column({})
    public entityId: string;
} 

Ссылка: Последовательная документация Typescript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...