javascript - MongoDB & Prisma: hubungan M-ke-N unilateral
Apakah ada cara untuk membuat hubungan m-ke-n sepihak atau apakah kedua koleksi harus memiliki id masing-masing? Saya sedang mencoba melakukan sesuatu seperti ini:
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])
// ....
}
Tapi prisma membuatku menambahkan bidang lain ke Country untuk menyimpan id pengguna... Seperti ini:
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])
}
Saya tidak membutuhkan data itu dan secara logis tidak diperlukan. Apakah ada cara untuk melewatinya? Ada jalan lain?
Jawaban #1
Setelah beberapa pengujian, saya menemukan bahwa jika saya membiarkan bidang userIds itu, meskipun tidak ada di dokumen manapun, negara-negara pengguna masih bisa di-query dengan benar. Satu-satunya kelemahan (tidak begitu) adalah saya tidak bisa men-query pengguna dari negara-negara tersebut. Tapi saya rasa itu masuk akal karena jika saya benar-benar perlu men-query mereka, menambahkan relasi userIds ke negara juga masuk akal. Masalah sebenarnya adalah error yang tidak membiarkan saya membangun/menjalankan kode tanpa userIds meskipun kode bekerja dengan baik tanpa itu.
EDIT:
Skema saya akhirnya seperti ini @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])
// ....
}
