การเริ่มต้นอย่างรวดเร็ว • เว็บไซต์ • เอกสาร • ตัวอย่าง • บล็อก • ความไม่ลงรอยกัน • Twitter
Prisma ORM เป็น ORM รุ่นต่อไป ที่ประกอบด้วยเครื่องมือเหล่านี้:
Prisma Client : ตัวสร้างคิวรีที่สร้างขึ้นอัตโนมัติและปลอดภัยสำหรับ Node.js และ TypeScript
Prisma Migrate : ระบบการสร้างแบบจำลองข้อมูลและการโยกย้ายที่เปิดเผย
Prisma Studio : GUI เพื่อดูและแก้ไขข้อมูลในฐานข้อมูลของคุณ
Prisma Client สามารถใช้ได้ในแอปพลิเคชันแบ็กเอน ด์ Node.js หรือ TypeScript (รวมถึงแอปพลิเคชันแบบไร้เซิร์ฟเวอร์และไมโครเซอร์วิส) ซึ่งอาจเป็น REST API, GraphQL API, gRPC API หรือสิ่งอื่นใดที่ต้องใช้ฐานข้อมูล
หากคุณต้องการฐานข้อมูลเพื่อใช้กับ Prisma ORM โปรดดูที่ Prisma Postgres
Prisma ORM สามารถขยายเพิ่มเติมได้ด้วยผลิตภัณฑ์ Prisma เหล่านี้:
Prisma Accelerate: แคชฐานข้อมูลส่วนกลางพร้อมการรวมการเชื่อมต่อที่ปรับขนาดได้
Prisma Pulse: กิจกรรมฐานข้อมูลแบบเรียลไทม์พร้อมการสมัครสมาชิกแบบปลอดภัย
Prisma Optimize: การเพิ่มประสิทธิภาพคิวรีที่ขับเคลื่อนด้วย AI และข้อมูลเชิงลึกด้านประสิทธิภาพ
Prisma Studio: โปรแกรมแก้ไขภาพสำหรับข้อมูลในฐานข้อมูลของคุณ
วิธีที่เร็วที่สุดในการเริ่มต้นใช้งาน Prisma คือการปฏิบัติตามคำแนะนำในการเริ่มต้นฉบับย่อ คุณสามารถเลือกฐานข้อมูลใดฐานข้อมูลหนึ่งจากสองฐานข้อมูล:
พริสม่า โพสต์เกรส
SQLite
หากคุณมีฐานข้อมูลของตัวเองอยู่แล้ว คุณสามารถปฏิบัติตามคำแนะนำเหล่านี้:
เพิ่ม Prisma ให้กับโปรเจ็กต์ที่มีอยู่
ตั้งค่าโปรเจ็กต์ใหม่ด้วย Prisma ตั้งแต่เริ่มต้น
ส่วนนี้ให้ภาพรวมระดับสูงเกี่ยวกับวิธีการทำงานของ Prisma ORM และองค์ประกอบทางเทคนิคที่สำคัญที่สุด หากต้องการข้อมูลเบื้องต้นโดยละเอียด โปรดดูเอกสารประกอบของ Prisma
ทุกโปรเจ็กต์ที่ใช้เครื่องมือจากชุดเครื่องมือ Prisma จะเริ่มต้นด้วยไฟล์สคีมา Prisma สคีมา Prisma ช่วยให้นักพัฒนาสามารถกำหนด โมเดลแอปพลิเคชัน ของตนในภาษาการสร้างแบบจำลองข้อมูลที่ใช้งานง่าย นอกจากนี้ยังมีการเชื่อมต่อกับฐานข้อมูลและกำหนด ตัวสร้าง :
// Data sourcedatasource db { provider = "postgresql" url = env ("DATABASE_URL")}// Generatorgenerator client { provider = "prisma-client-js"}// Data modelmodel Post { id Int @id @default (autoincreation( )) ชื่อเนื้อหาสตริงสตริง? เผยแพร่ Boolean @default(false) ผู้ใช้ผู้เขียน? @relation(fields: [authorId], การอ้างอิง: [id]) authorId Int?}model User { id Int @id @default(autoincreation()) อีเมล String @unique name String? โพสต์ โพสต์[]}
ในสคีมานี้ คุณกำหนดค่าสามสิ่ง:
แหล่งข้อมูล : ระบุการเชื่อมต่อฐานข้อมูลของคุณ (ผ่านตัวแปรสภาพแวดล้อม)
ตัวสร้าง : ระบุว่าคุณต้องการสร้าง Prisma Client
โมเดลข้อมูล : กำหนดโมเดลแอปพลิเคชันของคุณ
ในหน้านี้ โฟกัสอยู่ที่แบบจำลองข้อมูล คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับแหล่งข้อมูลและตัวสร้างได้ในหน้าเอกสารที่เกี่ยวข้อง
โมเดลข้อมูลคือชุดของโมเดล โมเดลมีสองหน้าที่หลัก:
เป็นตัวแทนของตารางในฐานข้อมูลพื้นฐาน
จัดเตรียมพื้นฐานสำหรับการสืบค้นใน Prisma Client API
มีขั้นตอนการทำงานหลักสองขั้นตอนในการ "รับ" โมเดลข้อมูลเข้าสู่ Prisma schema ของคุณ:
สร้างแบบจำลองข้อมูลจากการวิปัสสนาฐานข้อมูล
เขียนโมเดลข้อมูลด้วยตนเองและแมปโมเดลข้อมูลกับฐานข้อมูลด้วย Prisma Migrate
เมื่อกำหนดโมเดลข้อมูลแล้ว คุณสามารถสร้าง Prisma Client ซึ่งจะเปิดเผย CRUD และการสืบค้นเพิ่มเติมสำหรับโมเดลที่กำหนด หากคุณใช้ TypeScript คุณจะได้รับความปลอดภัยประเภทเต็มรูปแบบสำหรับการสืบค้นทั้งหมด (แม้ว่าจะดึงข้อมูลชุดย่อยของฟิลด์ของโมเดลเท่านั้น)
ขั้นตอนแรกเมื่อใช้ Prisma Client คือการติดตั้งแพ็คเกจ npm:
npm install @prisma/client
โปรดทราบว่าการติดตั้งแพ็คเกจนี้จะเรียกใช้คำสั่ง prisma generate
ซึ่งจะอ่านสคีมา Prisma ของคุณและ สร้าง โค้ด Prisma Client โค้ดจะอยู่ใน node_modules/.prisma/client
ซึ่งส่งออกโดย node_modules/@prisma/client/index.d.ts
หลังจากที่คุณเปลี่ยนโมเดลข้อมูลแล้ว คุณจะต้องสร้าง Prisma Client ใหม่ด้วยตนเองเพื่อให้แน่ใจว่าโค้ดภายใน node_modules/.prisma/client
ได้รับการอัปเดต:
npx prisma generate
โปรดดูเอกสารประกอบสำหรับข้อมูลเพิ่มเติมเกี่ยวกับ "การสร้างไคลเอ็นต์ Prisma"
เมื่อสร้าง Prisma Client แล้ว คุณสามารถนำเข้าลงในโค้ดของคุณและส่งคำสั่งไปยังฐานข้อมูลของคุณได้ นี่คือลักษณะของรหัสการตั้งค่า
คุณสามารถนำเข้าและสร้างอินสแตนซ์ Prisma Client ได้ดังต่อไปนี้:
นำเข้า { PrismaClient } จาก '@prisma/client'const prisma = new PrismaClient()
หรือ
const { PrismaClient } = ต้องการ('@prisma/client')const prisma = ใหม่ PrismaClient()
ตอนนี้คุณสามารถเริ่มส่งคำค้นหาผ่าน Prisma Client API ที่สร้างขึ้นได้ ต่อไปนี้คือตัวอย่างคำค้นหาบางส่วน โปรดทราบว่าคำสั่ง Prisma Client ทั้งหมดจะส่งคืนอ อบเจ็กต์ JavaScript เก่าธรรมดา
เรียนรู้เพิ่มเติมเกี่ยวกับการดำเนินการที่มีอยู่ในเอกสาร Prisma Client หรือชมวิดีโอสาธิตนี้ (2 นาที)
User
ทั้งหมดจากฐานข้อมูล// รันภายใน `async` functionconst allUsers = รอ prisma.user.findMany()
posts
ในแต่ละออบเจ็กต์ User
ที่ส่งคืน// เรียกใช้ภายใน `async` functionconst allUsers = await prisma.user.findMany ({ รวม: { โพสต์: true },})
Post
ทั้งหมดที่มี "prisma"
// เรียกใช้ภายใน `async` functionconst filteredPosts = await prisma.post.findMany({ โดยที่: { หรือ: [{ title: { contains: 'prisma' } } }, { content: { contains: 'prisma' } }], } ,})
User
ใหม่และบันทึก Post
ใหม่ในแบบสอบถามเดียวกัน// เรียกใช้ภายใน `async` functionconst user = await prisma.user.create({ data: { name: 'Alice', email: '[email protected]', โพสต์: { create: { title: 'Join us for Prisma วัน 2021' }, }, },})
Post
ที่มีอยู่// เรียกใช้ภายใน `async` functionconst post = await prisma.post.update ({ โดยที่: { id: 42 }, ข้อมูล: { เผยแพร่: true },})
โปรดทราบว่าเมื่อใช้ TypeScript ผลลัพธ์ของการสืบค้นนี้จะ ถูกพิมพ์แบบคงที่ ดังนั้นคุณจึงไม่สามารถเข้าถึงคุณสมบัติที่ไม่มีอยู่โดยไม่ได้ตั้งใจ (และการพิมพ์ผิดใดๆ จะถูกตรวจพบในขณะคอมไพล์) เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ประโยชน์จากประเภทที่สร้างขึ้นของ Prisma Client ในหน้าการใช้งานขั้นสูงของประเภทที่สร้างขึ้นในเอกสาร
Prisma มีชุมชนนักพัฒนาแอปพลิเคชันที่กระตือรือร้นจำนวนมากและให้การสนับสนุน คุณสามารถเข้าร่วมกับเราได้ที่ Discord และที่นี่ที่ GitHub
สร้างสิ่งที่ยอดเยี่ยมด้วย Prisma? - แสดงมันออกมาด้วยป้ายเหล่านี้ เหมาะสำหรับ readme หรือเว็บไซต์ของคุณ
[![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)
หากคุณมีปัญหาด้านความปลอดภัยที่ต้องรายงาน โปรดติดต่อเราที่ [email protected]
คุณสามารถถามคำถามและเริ่มการสนทนาเกี่ยวกับหัวข้อที่เกี่ยวข้องกับ Prisma ได้ในพื้นที่เก็บข้อมูล prisma
บน GitHub
- ถามคำถาม
หากคุณเห็นข้อความแสดงข้อผิดพลาดหรือพบปัญหา โปรดตรวจสอบให้แน่ใจว่าได้สร้างรายงานข้อบกพร่องแล้ว! คุณสามารถดูแนวทางปฏิบัติที่ดีที่สุดสำหรับการสร้างรายงานข้อบกพร่อง (เช่น การรวมเอาต์พุตการแก้ไขข้อบกพร่องเพิ่มเติม) ได้ในเอกสาร
- สร้างรายงานข้อผิดพลาด
หากปัจจุบัน Prisma ไม่มีฟีเจอร์บางอย่าง อย่าลืมตรวจสอบแผนการทำงานเพื่อดูว่ามีการวางแผนไว้สำหรับอนาคตหรือไม่
หากคุณลักษณะบนแผนการทำงานเชื่อมโยงกับปัญหา GitHub โปรดตรวจสอบให้แน่ใจว่าได้ทิ้งเครื่องหมาย ? ตอบสนองต่อปัญหาและแสดงความคิดเห็นเกี่ยวกับความคิดของคุณเกี่ยวกับคุณลักษณะนี้
- ส่งคำขอคุณลักษณะ
โปรดดูแนวทางการบริจาคของเราและหลักปฏิบัติสำหรับผู้มีส่วนร่วม
สถานะการทดสอบพริสม่า:
สถานะการทดสอบระบบนิเวศ: