#node.js #typescript #postgresql #sequelize.js
#node.js #typescript #postgresql #sequelize.js
Вопрос:
Я использую sequelize-typescript для своего проекта. Чтобы ускорить локальную разработку, я обычно использовал опцию синхронизации в своей локальной среде. Я заметил, что sequelize-typescript пытается создать ограничения перед созданием всех таблиц. Я делаю что-то не так или это зародыш продолжения?
Некоторый пример кода:
Групповая модель:
@Table
export default class Group extends Model<Group> {
@Column({
type: DataType.UUID,
defaultValue: DataType.UUIDV4,
primaryKey: true,
})
id: string;
@Column(DataType.STRING())
name: string;
// Associations
@HasMany(() => Transaction, { onDelete: 'SET NULL' })
transactions: Transaction[];
@ForeignKey(() => GroupCategory)
@Column
groupCategoryId: string;
@BelongsTo(() => GroupCategory, { onDelete: 'SET NULL' })
groupCategory: GroupCategory;
@BelongsToMany(() => User, () => UserGroup, { onDelete: 'SET NULL' })
users: User[];
}
Модель групповой категории:
@Table
export default class GroupCategory extends Model<GroupCategory> {
@PrimaryKey
@Column({
type: DataType.UUID,
defaultValue: DataType.UUIDV4,
})
id: string;
@Column(DataType.STRING)
name: string;
@Column(DataType.STRING(1500))
pictureSRC: string;
@Column(DataType.STRING)
backgrundColor: string;
@Column(DataType.STRING(3))
icon: string;
@HasMany(() => Group, { onDelete: 'SET NULL' })
groups: Group[];
}
Результирующая ошибка:
Executing (default): CREATE TABLE IF NOT EXISTS "Groups" ("id" UUID , "name" VARCHAR(255), "groupCategoryId" VARCHAR(255) REFERENCES "GroupCategories" ("id") ON DELETE SET NULL ON UPDATE CASCADE, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL, PRIMARY KEY ("id"));
(node:82264) UnhandledPromiseRejectionWarning: SequelizeDatabaseError: foreign key constraint "Groups_groupCategoryId_fkey" cannot be implemented