快速入門 • 網站 • 文件 • 範例 • 部落格 • Discord • 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 或任何其他需要資料庫的 API。
如果您需要與 Prisma ORM 一起使用的資料庫,請查看 Prisma Postgres。
Prisma ORM 可透過以下 Prisma 產品進一步擴展:
Prisma Accelerate:具有可擴展連接池的全域資料庫快取
Prisma Pulse:具有型別安全訂閱的即時資料庫事件
Prisma Optimize:人工智慧驅動的查詢最佳化和效能洞察
Prisma Studio:資料庫中資料的視覺化編輯器
開始使用 Prisma 的最快方法是遵循快速入門指南。您可以選擇以下兩個資料庫之一:
Prisma Postgres
SQLite
如果您已經擁有自己的資料庫,則可以遵循以下指南:
將 Prisma 新增至現有項目
從頭開始使用 Prisma 建立一個新項目
本節提供了 Prisma ORM 的工作原理及其最重要的技術組件的高級概述。如需更全面的介紹,請造訪 Prisma 文件。
每個使用 Prisma 工具包中的工具的專案都以 Prisma 架構檔案開始。 Prisma 架構允許開發人員以直覺的資料建模語言定義其應用程式模型。它還包含與資料庫的連接並定義了一個生成器:
// 資料來源datasource db {provider = "postgresql" url = env("DATABASE_URL")}// Generator產生器客戶端{provider = "prisma-client-js"}//資料模型model Post { id Int @id @default(autoincrement(autoincrement( )) 標題字串 內容字串? 已發布 布林值 @default(false) 作者 使用者? @relation(字段:[authorId],參考文獻:[id])authorId Int? 貼文 貼文[]}
在此架構中,您配置三件事:
資料來源:指定您的資料庫連線(透過環境變數)
Generator :表示要產生Prisma Client
資料模型:定義您的應用程式模型
在此頁面上,重點是資料模型。您可以在相應的文件頁面上了解有關資料來源和生成器的更多資訊。
資料模型是模型的集合。模型有兩個主要功能:
代表底層資料庫中的一張表
為 Prisma 用戶端 API 中的查詢提供基礎
將資料模型「取得」到 Prisma 架構中有兩個主要工作流程:
透過內省資料庫產生資料模型
手動編寫資料模型並使用 Prisma Migrate 將其對應到資料庫
定義資料模型後,您可以產生 Prisma 用戶端,它將公開 CRUD 和對定義的模型的更多查詢。如果您使用 TypeScript,您將獲得所有查詢的完整類型安全性(即使僅檢索模型欄位的子集)。
使用 Prisma Client 的第一步是安裝其 npm 套件:
npm install @prisma/client
請注意,此軟體包的安裝會呼叫prisma generate
命令,該命令會讀取您的 Prisma 架構並產生Prisma 用戶端程式碼。程式碼將位於node_modules/.prisma/client
中,由node_modules/@prisma/client/index.d.ts
匯出。
更改資料模型後,您需要手動重新產生 Prisma Client 以確保node_modules/.prisma/client
內的程式碼已更新:
npx prisma generate
有關「產生 Prisma 用戶端」的更多信息,請參閱文件。
產生 Prisma 用戶端後,您可以將其匯入程式碼並向資料庫傳送查詢。這就是設定代碼的樣子。
您可以如下匯入並實例化 Prisma Client:
從 '@prisma/client' 導入 { PrismaClient } const prisma = new PrismaClient()
或者
const { PrismaClient } = require('@prisma/client')const prisma = new PrismaClient()
現在您可以開始透過產生的 Prisma 用戶端 API 發送查詢,以下是一些範例查詢。請注意,所有 Prisma 用戶端查詢都會傳回普通的舊 JavaScript 物件。
了解有關 Prisma 用戶端文件中可用操作的更多資訊或觀看此示範影片(2 分鐘)。
User
記錄// 在 `async` 函數中執行 const allUsers = wait prisma.user.findMany()
User
物件上包含posts
關係// 在 `async` 函數中執行 const allUsers = wait prisma.user.findMany({ include: { posts: true },})
"prisma"
Post
記錄// 在`async` 函數中執行const FilteredPosts = wait prisma.post.findMany({ where: { OR: [{ title: { contains: 'prisma' } }, { content: { contains: 'prisma' } }] , } ,})
User
和新Post
記錄// 在`async` 函數中執行const user = wait prisma.user.create({ data: { name: 'Alice', email: '[email protected]', posts: { create: { title: '加入我們的Prisma 2021 年' }, }, },})
Post
記錄// 在 `async` 函數中執行 const post = wait prisma.post.update({ where: { id: 42 }, data: {published: true },})
請注意,使用 TypeScript 時,此查詢的結果將是靜態類型的,這樣您就不會意外訪問不存在的屬性(並且在編譯時捕獲任何拼寫錯誤)。在文件中產生類型的進階用法頁面上了解更多有關利用 Prisma Client 產生類型的資訊。
Prisma 擁有一個由熱情的應用程式開發人員組成的龐大且支持性的社群。您可以在 Discord 和 GitHub 上加入我們。
用 Prisma 打造了一些很棒的東西? ?用這些徽章展示它,非常適合您的自述文件或網站。
[![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] 與我們聯絡。
您可以在 GitHub 上的prisma
儲存庫中提出有關 Prisma 相關主題的問題並發起討論。
?問一個問題
如果您看到錯誤訊息或遇到問題,請務必建立錯誤報告!您可以在文件中找到建立錯誤報告(例如包括附加偵錯輸出)的最佳實踐。
?建立錯誤報告
如果 Prisma 目前沒有某個功能,請務必查看路線圖,看看未來是否已計劃好。
如果路線圖上的功能連結到 GitHub 問題,請確保留下 ?對這個問題的反應,最好是包含您對該功能的想法的評論!
?提交功能請求
請參閱我們的貢獻指南和貢獻者行為準則。
Prisma 測試狀態:
生態系測試狀態: