Skip to content

TypeError: Cannot read properties of undefined (reading 'type') #51

Open
@kuaj

Description

@kuaj

Hey,
there is some niche error for complex models (many to many)

TypeError: Cannot read properties of undefined (reading 'type')
    at getJoinIdType (/prisma-dbml-generator/dist/generator/many-to-many-tables.js:46:28)
    at joinField (/prisma-dbml-generator/dist/generator/many-to-many-tables.js:39:47)

I did hack around and that's because of multiple named relations that are completely valid within Prisma

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

generator dbml {
  provider      = "node ./dist/generator.js"
  mapToDbSchema = "false"
}

model Person {
  id String @id @default(uuid())

// this is the problematic definition
  SportClubMembers   SportClubMembers[]   @relation("member") 
  ScienceClubMembers ScienceClubMembers[] @relation("member")
}

model SportClub {
  id String @id @default(uuid())

  members SportClubMembers[]

  @@unique(id)
}

model ScienceClub {
  id String @id @default(uuid())

  members ScienceClubMembers[]

  @@unique(id)
}

//
// Relations
//

// Members on Somethings
model SportClubMembers {
  SportClub   SportClub @relation(fields: [sportClubId], references: id)
  sportClubId String
  Person      Person    @relation("member", fields: [personId], references: id)
  personId    String

  @@id([sportClubId, personId])
}

model ScienceClubMembers {
  ScienceClub   ScienceClub @relation(fields: [scienceClubId], references: id)
  scienceClubId String
  Person        Person      @relation("member", fields: [personId], references: id)
  personId      String

  @@id([scienceClubId, personId])
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions