Aplikasi Web Fullstack Next.js 15 · Pelajaran

Hubungan dan Pertanyaan Lanjutan dengan Prisma

Modelkan hubungan satu-ke-banyak dan banyak-ke-banyak, kemudian buat pertanyaan merentasnya dengan penulisan bersarang, include, select, penapisan dan penomboran halaman.

Pelajaran 4 daripada 413 langkah

Hubungan dan Pertanyaan Lanjutan dengan Prisma ialah pelajaran Aplikasi Web Fullstack Next.js 15 percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Aplikasi Web Fullstack Next.js 15, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Aplikasi Web Fullstack Next.js 15 merangkumi sejumlah 4 pelajaran.

Mengapa Hubungan?

Data sebenar saling berkaitan: seorang pengguna mempunyai banyak kiriman, dan satu kiriman mempunyai banyak tag. Prisma memodelkan hubungan ini dalam skema supaya anda boleh menelusurinya melalui pertanyaan yang selamat dari segi jenis.

Hubungan Satu-ke-Banyak dalam Skema

Hubungan satu-ke-banyak menghubungkan induk dengan banyak anak melalui kunci asing. Takrifkan kedua-dua sisi dalam skema.

model User {
  id    Int    @id @default(autoincrement())
  posts Post[]
}
model Post {
  id       Int  @id @default(autoincrement())
  authorId Int
  author   User @relation(fields: [authorId], references: [id])
}

Banyak-ke-Banyak

Prisma menyokong banyak-ke-banyak tersirat dengan hanya medan tatasusunan pada kedua-dua sisi; Prisma mengurus jadual penghubung untuk anda.

model Post { id Int @id @default(autoincrement()) tags Tag[] }
model Tag  { id Int @id @default(autoincrement()) posts Post[] }

Menyertakan Data Berkaitan

Secara lalai, pertanyaan hanya mengembalikan medan model. Gunakan include untuk mendapatkan rekod berkaitan juga.

const user = await prisma.user.findUnique({
  where: { id: 1 },
  include: { posts: true },
});

Memilih Medan Tertentu

Gunakan select untuk mendapatkan hanya lajur yang diperlukan — muatan lebih kecil dan pertanyaan lebih pantas. Anda boleh menyarang select untuk hubungan.

const posts = await prisma.post.findMany({
  select: { id: true, title: true, author: { select: { name: true } } },
});

Penulisan Bersarang

Cipta induk dan anaknya dalam satu panggilan dengan create bersarang. Prisma menjalankannya dalam transaksi.

await prisma.user.create({
  data: {
    name: 'Ada',
    posts: { create: [{ title: 'Hello' }, { title: 'World' }] },
  },
});

Menapis dengan where

Bina penapis terperinci dengan operator seperti contains, gt, in, dan gabungkannya dengan AND/OR.

const recent = await prisma.post.findMany({
  where: {
    published: true,
    title: { contains: 'Prisma' },
  },
});

Menapis Berdasarkan Hubungan

Anda boleh menapis induk berdasarkan syarat pada anaknya menggunakan some, every atau none.

const authors = await prisma.user.findMany({
  where: { posts: { some: { published: true } } },
});

Pengisihan dan Penomboran Halaman

Susun hasil dengan orderBy dan buat penomboran halaman dengan take/skip (offset) untuk penomboran halaman klasik.

const page = await prisma.post.findMany({
  orderBy: { createdAt: 'desc' },
  take: 10,
  skip: 20,
});

Penomboran Halaman Berasaskan Kursor

Untuk set data yang besar atau langsung, penomboran halaman berasaskan kursor lebih stabil berbanding offset. Hantar id terakhir yang dilihat sebagai kursor.

const next = await prisma.post.findMany({
  take: 10,
  cursor: { id: lastId },
  skip: 1,
});

Mengelakkan Pertanyaan N+1

Mendapatkan senarai kemudian membuat pertanyaan berasingan untuk setiap item menyebabkan masalah N+1. Prisma mengelakkannya: gunakan satu include untuk memuatkan hubungan dalam satu pertanyaan yang dioptimumkan, bukannya melakukan gelung.

Semakan Ringkas

Uji pengetahuan anda tentang hubungan Prisma.

Ulang Kaji

Anda telah mempelajari pertanyaan hubungan dengan Prisma:

  • Modelkan hubungan satu-ke-banyak dan banyak-ke-banyak dalam skema
  • Dapatkan hubungan dengan include; kurangkan medan dengan select
  • Penulisan bersarang mencipta induk dan anak secara atomik
  • Tapis berdasarkan hubungan, lakukan penomboran halaman dengan take/skip atau kursor, dan elakkan masalah N+1
Percuma untuk bermula

Pelajari TypeScript dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Hubungan dan Pertanyaan Lanjutan dengan Prisma” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Aplikasi Web Fullstack Next.js 15, termasuk “Hubungan dan Pertanyaan Lanjutan dengan Prisma”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Aplikasi Web Fullstack Next.js 15 merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Hubungan dan Pertanyaan Lanjutan dengan Prisma”?

Modelkan hubungan satu-ke-banyak dan banyak-ke-banyak, kemudian buat pertanyaan merentasnya dengan penulisan bersarang, include, select, penapisan dan penomboran halaman. Anda berlatih Aplikasi Web Fullstack Next.js 15 menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Aplikasi Web Fullstack Next.js 15?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Aplikasi Web Fullstack Next.js 15 di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Hubungan dan Pertanyaan Lanjutan dengan Prisma” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Aplikasi Web Fullstack Next.js 15 ini?

Ya. Setiap pelajaran Aplikasi Web Fullstack Next.js 15 menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Pengenalan kepada Prisma ORM
  2. Reka Bentuk Skema dan Migrasi Prisma
  3. Operasi CRUD dengan Klien Prisma
  4. Hubungan dan Pertanyaan Lanjutan dengan Prisma
← Kembali ke Aplikasi Web Fullstack Next.js 15