Typeorm query fails when a relationship is added

388 Views Asked by At

Hi guys I am using medusajs / typeorm and currently I am facing an strange problem, using the same repository to retrieve some data, works perfectly when no relationship is added, but when eager is added or relations added to the repository give an strange error:

Here is the files:

  • Models:
import { Column, Entity, OneToMany, ManyToOne, JoinColumn } from "typeorm"
import { BaseEntity } from "@medusajs/medusa"
import { QuantityConstraint } from "../types/quantity-constraint"
import { ModifierOption } from "./modifier-option"
import { ProductVariant } from "./product-variant"

@Entity()
export class ModifiersGroup extends BaseEntity {

    @Column()
    title: string;

    @Column({  nullable: true })
    subtitle: string | null;

    @Column({  nullable: true })
    description: string | null;

    @Column({ type: "int", nullable: true })
    rank: number | null;

    @Column({  nullable: true })
    image_url: string | null

    @Column({ type: "bool", default: false})
    is_disabled: boolean

    @Column({ type: "simple-json", nullable: true })
    quantity_info: QuantityConstraint | null

    @OneToMany(() => ModifierOption, (modifierOption) => modifierOption.group, {
        cascade: true,
        eager: true
    })
    options: ModifierOption[]

    @ManyToOne(() => ProductVariant, (productVariant) => productVariant.modifiers_groups)
    @JoinColumn({ name: "variant_id", referencedColumnName: "id" })
    variant: ProductVariant
}
import {
    Column,
    Entity,
    ManyToOne,
    JoinColumn
} from "typeorm"
import { BaseEntity } from "@medusajs/medusa"
import { ModifiersGroup } from "./modifiers-group";
import { MoneyAmount } from "./money-amount";
import { QuantityConstraint } from "../types/quantity-constraint";

@Entity()
export class ModifierOption extends BaseEntity {
    @Column()
    title: string;

    @Column({ nullable: true })
    subtitle: string | null;

    @Column({ nullable: true })
    description: string | null;

    @Column({ type: "int", nullable: true })
    rank: number | null;

    @Column({ nullable: true })
    image_url: string | null

    @Column({type: "bool", default: false})
    is_disabled: boolean

    @Column({ type: "simple-json", nullable: true })
    prices: MoneyAmount[]

    @Column({ type: "simple-json", nullable: true })
    quantity_info: QuantityConstraint | null

    @ManyToOne(() => ModifiersGroup, (modifiersGroup) => modifiersGroup.options)
    @JoinColumn({ name: "modifiers_group_id", referencedColumnName: "id" })
    group: ModifiersGroup
}
  • Repository:
import { FindOptionsWhere } from "typeorm"
import { ModifiersGroup } from "../models/modifiers-group"

import {
    dataSource,
} from "@medusajs/medusa/dist/loaders/database"

export const ModifiersGroupRepository = dataSource
    .getRepository(ModifiersGroup)
    .extend({
        async retrieveOneByVariant(variantId: string): Promise<ModifiersGroup | null> {
            return this.findOne(
                {
                    where: {
                        variant: { "id": variantId }
                    }
                }
            )
        }
    })

export default ModifiersGroupRepository
  • Error
023-05-11 23:15:42 SyntaxError: Unexpected token , in JSON at position 68
2023-05-11 23:15:42     at JSON.parse (<anonymous>)
2023-05-11 23:15:42     at DateUtils.stringToSimpleJson (/app/medusa/node_modules/typeorm/util/DateUtils.js:185:49)
2023-05-11 23:15:42     at PostgresDriver.prepareHydratedValue (/app/medusa/node_modules/typeorm/driver/postgres/PostgresDriver.js:518:43)
2023-05-11 23:15:42     at /app/medusa/node_modules/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js:132:55
2023-05-11 23:15:42     at Array.forEach (<anonymous>)
2023-05-11 23:15:42     at RawSqlResultsToEntityTransformer.transformColumns (/app/medusa/node_modules/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js:118:26)
2023-05-11 23:15:42     at RawSqlResultsToEntityTransformer.transformRawResultsGroup (/app/medusa/node_modules/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js:98:33)
2023-05-11 23:15:42     at /app/medusa/node_modules/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js:33:33
2023-05-11 23:15:42     at Map.forEach (<anonymous>)
2023-05-11 23:15:42     at RawSqlResultsToEntityTransformer.transform (/app/medusa/node_modules/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js:32:15)```




I tried, with eager on the model as is now, also adding relations: { options: true} in the repository, same error.
0

There are 0 best solutions below