Sequelize Postgres Не сохраняет данные с асоциаций
Описал модель таблицы, все по документации
Services
async addError(errorDto: ErrorDto, origin: string) {
const saveData: ICreatError = {...errorDto, project: ''}
if (errorDto.logs) saveData.logs = errorDto.logs.map(({x, y}: {x: number, y:number}) => ({x, y}))
if (!origin && errorDto.project) saveData.project = errorDto.project
else if (/'secret'/.test(origin)) saveData.project = 'secret'
else if (/secret/.test(origin)) saveData.project = 'secret'
else if (/secret/.test(origin)) saveData.project = 'secret'
else if (/secret/.test(origin)) saveData.project = 'secret'
try {
return this.errorModel.create(saveData)
} catch (err) {
throw new HttpException('Error model save', HttpStatus.NOT_ACCEPTABLE);
}
}
Model Error
import {
AllowNull,
AutoIncrement,
Column,
DataType,
HasMany, HasOne,
Model,
PrimaryKey,
Table,
Unique
} from "sequelize-typescript";
import {ApiProperty} from "@nestjs/swagger";
import {ILog, Log} from "@/models/error/log.model";
import {ICreateSize, Size} from "@/models/error/size.model";
export type Type = 'front' | 'back'
export type Project = 'secret' | 'secret' | 'secret' | 'secret' | ''
export interface ICreatError {
error: string
errorInfo: string
function: string
component: string
logs: ILog[]
project: Project
href: string
type: Type
size?: ICreateSize
}
@Table({tableName: 'error'})
export class Error extends Model<Error, ICreatError> {
@ApiProperty({example: 1})
@Unique
@AutoIncrement
@PrimaryKey
@Column({type: DataType.INTEGER})
_id: number
@ApiProperty({required: true, example: `Page: https://www.df-alliance.com/directory Function: API middleware()
Logs:
[Front end]
Error: Request failed with status code 401`})
@AllowNull
@Column({type: DataType.STRING})
error: string
@ApiProperty()
@Column({type: DataType.STRING})
errorInfo: string
@ApiProperty({example: 'handler()'})
@Column({type: DataType.STRING})
function: string
@ApiProperty({example: 'resources/js/Pages/Main/Faq/Item.tsx'})
@Column({type: DataType.STRING})
component: string
@ApiProperty({example: '#Max'})
@Column({type: DataType.STRING})
author: string
@ApiProperty({example: [{content:'',tag:'DIV','class':'980',x: 1, y:203}]})
@HasMany(() => Log, 'errorId')
logs: Log[]
@ApiProperty({example: 'secret'})
@AllowNull
@Column({type: DataType.STRING})
project: Project
@ApiProperty({example: 'https://secret.com'})
@Column({type: DataType.STRING, defaultValue: ''})
href: string
@ApiProperty({example: 'front'})
@Column({type: DataType.STRING})
type: Type
@HasOne(() => Size, 'errorId')
size: Size
}
Model Log
import {
AutoIncrement,
BelongsTo,
Column,
DataType,
ForeignKey,
Model,
PrimaryKey,
Table,
Unique
} from "sequelize-typescript";
import {Error} from "@/models/error.model";
export interface ICreateSize {
width: number
height: number
vHeight: number
}
@Table({modelName: 'size', createdAt: false, updatedAt: false})
export class Size extends Model<Size, ICreateSize> {
@ForeignKey(() => Error)
@PrimaryKey
@AutoIncrement
@Unique
@Column({type: DataType.INTEGER})
errorId: number
@Column
width: number
@Column
height: number
@Column
vHeight: number
/* Associations */
@BelongsTo(() => Error)
error: Error
}
Model Size
import {
AutoIncrement,
BelongsTo,
Column,
DataType,
ForeignKey,
Model,
PrimaryKey,
Table,
Unique
} from "sequelize-typescript";
import {Error} from "@/models/error.model";
export interface ILog {
x: number,
y: number
}
@Table({modelName: 'logs'})
export class Log extends Model<Log, ILog> {
@ForeignKey(() => Error)
@PrimaryKey
@AutoIncrement
@Unique
@Column({type: DataType.INTEGER})
errorId: number
@Column
x: number
@Column
y: number
/* Associations */
@BelongsTo(() => Error)
error: Error
}
Таблиц logs и size нету, в чем может быть ошибка???
Ответы (1 шт):
Автор решения: Mr. Byte
→ Ссылка
Проблема была в том что когда я создаю экземпляр я указываю не ассоциации
return this.errorModel.create(saveData, {include: [Log, Size]})
Надеюсь это кому то поможет не сидеть 3 дня в раздумиях как это делал я))
