Panduan Mulai Cepat • Situs Web • Dokumen • Contoh • Blog • Discord • Twitter
Prisma ORM adalah ORM generasi berikutnya yang terdiri dari alat-alat berikut:
Klien Prisma : Pembuat kueri yang dibuat secara otomatis dan aman untuk tipe untuk Node.js & TypeScript
Prisma Migrate : Pemodelan data deklaratif & sistem migrasi
Prisma Studio : GUI untuk melihat dan mengedit data di database Anda
Klien Prisma dapat digunakan di aplikasi backend Node.js atau TypeScript apa pun (termasuk aplikasi tanpa server dan layanan mikro). Ini bisa berupa REST API, GraphQL API, gRPC API, atau apa pun yang memerlukan database.
Jika Anda memerlukan database untuk digunakan dengan Prisma ORM, lihat Prisma Postgres.
Prisma ORM selanjutnya dapat diperluas dengan produk Prisma berikut:
Prisma Accelerate: Cache database global dengan pengumpulan koneksi yang dapat diskalakan
Prisma Pulse: Peristiwa basis data real-time dengan langganan yang aman untuk tipe
Prisma Optimize: Pengoptimalan kueri dan wawasan kinerja yang didukung AI
Prisma Studio: Editor visual untuk data dalam database Anda
Cara tercepat untuk memulai Prisma adalah dengan mengikuti panduan memulai cepat. Anda dapat memilih salah satu dari dua database:
Prisma Postgres
SQLite
Jika Anda sudah memiliki database sendiri, Anda dapat mengikuti panduan berikut:
Tambahkan Prisma ke proyek yang sudah ada
Siapkan proyek baru dengan Prisma dari awal
Bagian ini memberikan gambaran umum tingkat tinggi tentang cara kerja Prisma ORM dan komponen teknis terpentingnya. Untuk pengenalan yang lebih menyeluruh, kunjungi dokumentasi Prisma.
Setiap proyek yang menggunakan alat dari toolkit Prisma dimulai dengan file skema Prisma. Skema Prisma memungkinkan pengembang untuk menentukan model aplikasi mereka dalam bahasa pemodelan data yang intuitif. Ini juga berisi koneksi ke database dan mendefinisikan generator :
// Sumber datadatasource db { penyedia = "postgresql" url = env("DATABASE_URL")}// Klien generatorgenerator { penyedia = "prisma-client-js"}// Model datamodel Posting { id Int @id @default(peningkatan otomatis( )) judul String konten String? diterbitkan Boolean @default(false) penulis Pengguna? @relation(bidang: [authorId], referensi: [id]) authorId Int?}model Pengguna { id Int @id @default(autoinrice()) email String @nama unik String? kiriman Kiriman[]}
Dalam skema ini, Anda mengonfigurasi tiga hal:
Sumber data : Menentukan koneksi database Anda (melalui variabel lingkungan)
Generator : Menunjukkan bahwa Anda ingin membuat Klien Prisma
Model data : Mendefinisikan model aplikasi Anda
Pada halaman ini, fokusnya adalah pada model data. Anda dapat mempelajari lebih lanjut tentang Sumber Data dan Generator di halaman dokumen masing-masing.
Model data adalah kumpulan model. Model mempunyai dua fungsi utama:
Mewakili tabel di database yang mendasarinya
Memberikan dasar untuk kueri di Prisma Client API
Ada dua alur kerja utama untuk "memasukkan" model data ke dalam skema Prisma Anda:
Hasilkan model data dari introspeksi database
Menulis model data secara manual dan memetakannya ke database dengan Prisma Migrate
Setelah model data ditentukan, Anda dapat membuat Klien Prisma yang akan menampilkan CRUD dan kueri lainnya untuk model yang ditentukan. Jika Anda menggunakan TypeScript, Anda akan mendapatkan keamanan tipe penuh untuk semua kueri (meskipun hanya mengambil subset bidang model).
Langkah pertama saat menggunakan Prisma Client adalah menginstal paket npmnya:
npm install @prisma/client
Perhatikan bahwa instalasi paket ini memanggil perintah prisma generate
yang membaca skema Prisma Anda dan menghasilkan kode Klien Prisma. Kode akan ditempatkan di node_modules/.prisma/client
, yang diekspor oleh node_modules/@prisma/client/index.d.ts
.
Setelah mengubah model data, Anda harus membuat ulang Klien Prisma secara manual untuk memastikan kode di dalam node_modules/.prisma/client
diperbarui:
npx prisma generate
Lihat dokumentasi untuk informasi lebih lanjut tentang "membuat klien Prisma".
Setelah Klien Prisma dibuat, Anda dapat mengimpornya ke dalam kode Anda dan mengirimkan pertanyaan ke database Anda. Seperti inilah tampilan kode pengaturannya.
Anda dapat mengimpor dan membuat instance Klien Prisma sebagai berikut:
impor { PrismaClient } dari '@prisma/client'const prisma = new PrismaClient()
atau
const { PrismaClient } = memerlukan('@prisma/klien')const prisma = PrismaClient baru()
Sekarang Anda dapat mulai mengirim kueri melalui API Klien Prisma yang dihasilkan, berikut adalah beberapa contoh kueri. Perhatikan bahwa semua kueri Klien Prisma mengembalikan objek JavaScript lama yang biasa .
Pelajari lebih lanjut tentang operasi yang tersedia di dokumen Klien Prisma atau tonton video demo ini (2 menit).
User
dari database// Jalankan di dalam `async` functionconst allUsers = menunggu prisma.user.findMany()
posts
pada setiap objek User
yang dikembalikan// Jalankan di dalam `async` functionconst allUsers = menunggu prisma.user.findMany({ include: { postingan: true },})
Post
yang mengandung "prisma"
// Jalankan di dalam `async` functionconst filteredPosts = menunggu prisma.post.findMany({ di mana: { OR: [{ title: { berisi: 'prisma' } }, { konten: { berisi: 'prisma' } }], } ,})
User
baru dan catatan Post
baru dalam kueri yang sama// Jalankan di dalam `async` functionconst user = menunggu prisma.user.create({ data: { name: 'Alice', email: '[email protected]', posts: { create: { title: 'Bergabunglah dengan kami untuk Prisma Hari 2021' }, }, },})
Post
yang ada// Jalankan di dalam `async` functionconst post = menunggu prisma.post.update({ di mana: { id: 42 }, data: { diterbitkan: true },})
Perhatikan bahwa saat menggunakan TypeScript, hasil kueri ini akan diketik secara statis sehingga Anda tidak dapat mengakses properti yang tidak ada secara tidak sengaja (dan kesalahan ketik apa pun akan terdeteksi pada waktu kompilasi). Pelajari lebih lanjut tentang memanfaatkan tipe yang dihasilkan Klien Prisma di halaman Penggunaan lanjutan tipe yang dihasilkan di dokumen.
Prisma memiliki komunitas pengembang aplikasi yang besar dan mendukung. Anda dapat bergabung dengan kami di Discord dan di sini di GitHub.
Membangun sesuatu yang luar biasa dengan Prisma? ? Pamerkan dengan lencana ini, cocok untuk readme atau situs web Anda.
[![Made with Prisma](http://made-with.prisma.io/dark.svg)](https://prisma.io)
[![Made with Prisma](http://made-with.prisma.io/indigo.svg)](https://prisma.io)
Jika Anda memiliki masalah keamanan untuk dilaporkan, silakan hubungi kami di [email protected].
Anda dapat mengajukan pertanyaan dan memulai diskusi tentang topik terkait Prisma di repositori prisma
di GitHub.
? Ajukan pertanyaan
Jika Anda melihat pesan kesalahan atau mengalami masalah, pastikan untuk membuat laporan bug! Anda dapat menemukan praktik terbaik untuk membuat laporan bug (seperti menyertakan keluaran proses debug tambahan) di dokumen.
? Buat laporan bug
Jika Prisma saat ini tidak memiliki fitur tertentu, pastikan untuk memeriksa peta jalan untuk mengetahui apakah fitur ini sudah direncanakan di masa mendatang.
Jika fitur pada peta jalan terkait dengan masalah GitHub, pastikan untuk meninggalkan tanda ? reaksi terhadap masalah ini dan idealnya berikan komentar yang berisi pendapat Anda tentang fitur tersebut!
? Kirim permintaan fitur
Lihat pedoman kontribusi dan Kode Etik kami untuk kontributor.
Status Tes Prisma:
Status Pengujian Ekosistem: