javascript - MongoDB & Prisma: unilaterlana M-do-N veza
Postoji li način da se napravi jednostrana m-prema-n veza ili moraju obje kolekcije imati ID-eve jedna druge? Pokušavam napraviti nešto ovako:
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])
// ....
}
Ali prisma me tjera da dodam još jedno polje u Country za pohranu ID-ova korisnika... Ovako:
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])
}
Ne trebam te podatke i oni nisu logično potrebni. Postoji li neki način da to zaobiđem? Postoji li neki zaobilazni način?
Odgovor #1
Nakon nekih testiranja otkrio sam da ako ostavim to polje userIds, iako ne postoji u nijednom dokumentu, zemlje korisnika se i dalje mogu ispravno upitirati. Jedini nedostatak (koji zapravo nije problem) je što ne mogu upitavati korisnike iz tih zemalja. Ali pretpostavljam da ima smisla jer ako bih zapravo trebao upitivati njih, dodavanje relacije userIds u zemlju također bi imalo smisla. Stvarni problem je greška koja mi ne dopušta da izgradim/pokrenem kod bez userIds, iako radi bez njega.
UREDI:
Moj je opis završio ovako @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])
// ....
}
