I implemented Sequelize TypeScript database ORM using MS SQL. Insert query and update query is working fine. While fetching data I try to associate the Model but its throwing error:
error - message: Foreign key for \"ScheduleModel\" is missing on \"EventModel\"
Parent table: schedule
export interface ScheduleAttribute {
name: string;
eventId: string;
notes: string;
events: EventAttributes[];
createdBy: string;
}
export interface CreateScheduleAttributes extends Omit<ScheduleAttribute, 'id'> {}
@ObjectType({ simpleResolvers: true })
@Table({
tableName: 'schedule',
})
export class ScheduleModel extends Model<ScheduleModel> implements ScheduleAttribute {
@PrimaryKey
@Field(() => ID)
@Column({ defaultValue: DataType.UUIDV4 })
id: string;
@Field({ nullable: false })
@Column({ field: 'name', allowNull: false })
name: string;
@PrimaryKey
@Field(() => String, { nullable: true })
@ForeignKey(() => EventModel)
@Column
eventId: string;
@Field(type => [EventModel])
@HasMany(()=>EventModel)
events: EventModel[];
@Field({ nullable: true })
@Column({ field: 'createdBy', allowNull: true })
createdBy: string;
}
Child table:
export interface EventAttributes {
eventname: string;
eventDate: string;
eventType: string;
}
export interface CreateEventAttribute extends Omit<EventAttributes, 'id'> {}
@ObjectType({ simpleResolvers: true })
@Table({
tableName: 'events',
})
export class EventModel extends Model<EventModel> implements EventAttributes {
@PrimaryKey
@Field(() => ID)
@Column({ defaultValue: DataType.UUIDV4 })
id: string;
@Field({ nullable: false })
@Column({ field: 'eventname', allowNull: false })
eventname: string;
@Field({ nullable: false })
@Column({ field: 'eventDate', allowNull: false })
eventDate: string;
@Field({ nullable: false })
@Column({ field: 'eventType', allowNull: false })
eventType: string;
@BelongsTo(() => ScheduleModel, { foreignKey: 'eventId' })
events: ScheduleModel;
}
Insert query is working fine. When try to get records it's throwing for below error:
error - message: Foreign key for \"ScheduleModel\" is missing on \"EventModel\"
I wrote following GetAPI:
sObj = await ScheduleModel.findAll({
include: [
{
model: EventModel,
},
]
});
return sObj
Please help some to resolve it. Thanks in advance.
foreignKey: 'eventId'onhasManyside? - AnatolyforeignKey: 'eventId'. What exactly you suggesting can you please put in code here - user15822248@HasMany(()=>EventModel, { foreignKey: 'eventId' })inScheduleModel- Anatoly