Weboldal keresés

javascript - MongoDB & Prisma: egyoldalú M-tól-N-ig kapcsolat


Van mód arra, hogy egyoldalú m-n kapcsolatot hozzak létre, vagy mindkét gyűjteménynek kölcsönösen kell tartalmaznia egymás azonosítóit? Valami ilyesmit próbálok csinálni:

model Country {
  id              String    @id @default(auto()) @map("_id") @db.ObjectId
  name            String    @unique
  users           User[]
}

model User {
  id              String    @id @default(auto()) @map("_id") @db.ObjectId
  userName        String    @unique
  countryIds      String[]  @db.ObjectId
  countries       Country[] @relation(fields: [countryIds], references: [id])
  // ....
}

De a Prisma arra kényszerít, hogy adjak hozzá egy másik mezőt a Country-hoz a felhasználói azonosítók tárolásához... Így:

model Country {
  id              String    @id @default(auto()) @map("_id") @db.ObjectId
  name            String    @unique
  userIds         String[]  @db.ObjectId
  users           Player[]  @relation(fields: [userIds], references: [id])
}

Nincs szükségem arra az adatra, és logikailag sem szükséges. Van mód arra, hogy megkerüljem ezt? Van valamilyen megoldás?

Válasz #1

Néhány tesztelés után arra jutottam, hogy ha meghagyom azt a userIds mezőt, még akkor is, ha az nem létezik egyetlen dokumentumban sem, a felhasználók országai még mindig helyesen lekérdezhetők. Az egyetlen hátrány (ami igazából nem is az) az, hogy nem tudom lekérdezni az adott országokból a felhasználókat. De gondolom, ez logikus, mivel ha tényleg szükségem lenne rá, hogy lekérdezzem őket, a userIds kapcsolat hozzáadása az országhoz is értelmes lenne. A valódi probléma az az error, ami miatt nem tudom build-elni/futtatni a kódot userIds nélkül, pedig anélkül is teljesen jól működik.

SZERKESZTÉS:

A sémám így végződött @Min Somai:

model Country {
  id              String    @id @default(auto()) @map("_id") @db.ObjectId
  name            String    @unique
  userIds         String[]  @db.ObjectId
  users           User[]    @relation(fields: [countryIds], references: [id])
}

model User {
  id              String    @id @default(auto()) @map("_id") @db.ObjectId
  userName        String    @unique
  countryIds      String[]  @db.ObjectId
  countries       Country[] @relation(fields: [countryIds], references: [id])
  // ....
}