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])
// ....
}
