javascript - MongoDB & Prisma: relazione unilaterale M-a-N
Esiste un modo per creare una relazione unilaterale m-a-n oppure entrambe le collezioni devono avere gli ID dell'altro? Sto cercando di fare qualcosa del genere:
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])
// ....
}
Ma Prisma mi sta facendo aggiungere un altro campo a Country per memorizzare gli ID degli utenti... Così:
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])
}
Non ho bisogno di quei dati e non sono logicamente necessari. C'è un modo per aggirarlo? Qualche soluzione alternativa?
Risposta n. 1
Dopo alcuni test ho scoperto che se lascio quel campo userIds, anche se non esiste in nessun documento, i paesi dell'utente possono comunque essere interrogati correttamente. L'unico svantaggio (non proprio) è che non posso interrogare gli utenti dai paesi. Ma immagino che abbia senso, dato che se avessi davvero bisogno di interrogarli, aggiungere la relazione userIds al paese avrebbe senso. Il vero problema è l'errore che non mi permette di costruire/eseguire il codice senza userIds, anche se funziona bene senza di esso.
MODIFICA:
Il mio schema è finito così @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])
// ....
}
