Pengisian Awal Pangkalan Data dan Pengumpulan Sambungan
Isi pangkalan data anda dengan data awal yang boleh dipercayai dan konfigurasikan pengumpulan sambungan Prisma supaya aplikasi Next.js anda kekal pantas serta stabil ketika menerima beban.
Pengisian Awal Pangkalan Data dan Pengumpulan Sambungan ialah pelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) 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 Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan), dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) merangkumi sejumlah 4 pelajaran.
Sebab Membenihkan Pangkalan Data
Pembenihan mengisi pangkalan data dengan data permulaan yang boleh dijangka: pengguna pentadbir, rekod demo dan jadual carian. Ini membolehkan setiap pembangun dan setiap pelaksanaan CI bermula daripada keadaan diketahui yang sama.
Tanpa pembenihan, kemasukan data secara manual menjadikan ujian tidak konsisten dan proses mula menggunakan sistem menjadi lambat.
Skrip Pembenihan Prisma
Prisma menjalankan fail pembenihan yang Anda tentukan. Cipta prisma/seed.ts dan daftarkannya dalam package.json di bawah kunci prisma.seed supaya prisma db seed tahu perkara yang perlu dilaksanakan.
{
"prisma": {
"seed": "ts-node prisma/seed.ts"
}
}Menulis Logik Pembenihan
Dalam fail pembenihan, wujudkan klien dan cipta rekod. Bungkusnya dalam fungsi async dan putuskan sambungan apabila selesai.
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function main() {
await prisma.user.create({
data: { email: 'admin@app.com', name: 'Admin' }
});
}
main().finally(() => prisma.$disconnect());Pembenihan Idempoten dengan upsert
Menjalankan pembenihan dua kali tidak sepatutnya mencipta pendua. Gunakan upsert supaya rekod dicipta jika tiada dan dikemas kini jika sudah wujud.
await prisma.user.upsert({
where: { email: 'admin@app.com' },
update: {},
create: { email: 'admin@app.com', name: 'Admin' }
});Pembenihan Pukal
Untuk memasukkan banyak baris dengan cekap, gunakan createMany. Pilihan skipDuplicates mengelakkan ralat akibat konflik unik.
await prisma.tag.createMany({
data: [
{ name: 'news' },
{ name: 'sports' },
{ name: 'tech' }
],
skipDuplicates: true
});Menjalankan Pembenihan
Cetuskan skrip daripada CLI. Prisma turut menjalankannya secara automatik selepas prisma migrate reset, lalu memberikan Anda pangkalan data yang bersih dan dibenihkan semula.
npx prisma db seedMasalah Sambungan dalam Tanpa Pelayan
Next.js pada Vercel menjalankan fungsi tanpa pelayan. Setiap penggunaan boleh membuka sambungan pangkalan data baharu, dan di bawah beban tinggi Anda akan cepat menghabiskan had sambungan pangkalan data.
Pengumpulan sambungan menyelesaikan masalah ini dengan menggunakan semula set sambungan yang tetap.
Menggunakan Semula Klien Prisma
Dalam pembangunan, muat semula panas boleh menghasilkan banyak klien. Simpan satu instance pada globalThis supaya hanya satu klien wujud bagi setiap proses.
import { PrismaClient } from '@prisma/client';
const g = globalThis as unknown as { prisma?: PrismaClient };
export const prisma = g.prisma ?? new PrismaClient();
if (process.env.NODE_ENV !== 'production') g.prisma = prisma;Pengumpulan dengan URL Sambungan
Gunakan pengumpul seperti PgBouncer atau Prisma Accelerate. Halakan DATABASE_URL Anda kepada titik akhir terkumpul dan tambahkan ?pgbouncer=true supaya Prisma menyahdayakan kenyataan yang telah disediakan, yang tidak boleh dikongsi oleh PgBouncer.
DATABASE_URL="postgresql://user:pass@host:6543/db?pgbouncer=true&connection_limit=1"URL Terus untuk Migrasi
Sambungan terkumpul tidak boleh menjalankan migrasi. Tambahkan directUrl dalam skema Anda yang memintas pengumpul supaya prisma migrate berfungsi.
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_URL")
}Amalan Terbaik
Pastikan lapisan data Anda sihat:
- Jadikan pembenihan idempoten dengan upsert
- Gunakan semula satu instance klien
- Gunakan pengumpul dalam persekitaran tanpa pelayan
- Simpan URL terus yang berasingan untuk migrasi
Semakan Pantas
Uji perkara yang telah Anda pelajari tentang pengumpulan.
Ringkasan
Anda telah mempelajari cara membenihkan dan mengumpulkan sambungan pangkalan data:
- Konfigurasikan
prisma.seeddan tulis pembenihan idempoten denganupsert - Masukkan data secara pukal dengan
createMany - Gunakan semula satu klien Prisma untuk mengelakkan kebocoran
- Gunakan
DATABASE_URLterkumpul sertadirectUrluntuk migrasi
Kini pangkalan data Anda bermula dalam keadaan diketahui dan boleh diskalakan dengan selamat.
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
- 22
- Pelajaran
- 88
Soalan Lazim
Adakah pelajaran “Pengisian Awal Pangkalan Data dan Pengumpulan Sambungan” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan), termasuk “Pengisian Awal Pangkalan Data dan Pengumpulan Sambungan”, 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 Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pengisian Awal Pangkalan Data dan Pengumpulan Sambungan”?
Isi pangkalan data anda dengan data awal yang boleh dipercayai dan konfigurasikan pengumpulan sambungan Prisma supaya aplikasi Next.js anda kekal pantas serta stabil ketika menerima beban. Anda berlatih Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) 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 Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan)?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) 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 “Pengisian Awal Pangkalan Data dan Pengumpulan Sambungan” 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 Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) ini?
Ya. Setiap pelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) 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
- Menyediakan Prisma ORM
- CRUD dengan Server Actions
- Migrasi Skema Pangkalan Data
- Pengisian Awal Pangkalan Data dan Pengumpulan Sambungan