<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Prisma:適用于Node.js和TypeScript的完整ORM

          共 4362字,需瀏覽 9分鐘

           ·

          2021-06-05 20:59

          原文:https://www.prisma.io/blog/prisma-the-complete-orm-inw24qjeawmb

          Prisma是Node.js和TypeScript的下一代ORM。經(jīng)過(guò)兩年多的開(kāi)發(fā),我們很高興分享所有Prisma工具已準(zhǔn)備好投入生產(chǎn)!

          目錄


          • 對(duì)象關(guān)系映射的新范例

            • 數(shù)據(jù)庫(kù)是很難的

            • Prisma-Node.js和TypeScript的完整ORM

          • Prisma適合任何技術(shù)棧

          • 為任務(wù)關(guān)鍵型應(yīng)用程序的生產(chǎn)做好準(zhǔn)備

            • 從GraphQL到數(shù)據(jù)庫(kù)

            • 我們關(guān)心開(kāi)發(fā)人員

            • 公司在生產(chǎn)中使用Prisma

            • 從原型到開(kāi)發(fā)再到生產(chǎn)

            • 下一代Web框架基于Prisma構(gòu)建

          • 開(kāi)源及其他


          對(duì)象關(guān)系映射的新范例

          Prisma是適用于Node.js和TypeScript的下一代開(kāi)源ORM。它包含以下工具:

          • Prisma Client——自動(dòng)生成且類型安全的數(shù)據(jù)庫(kù)客戶端
          • Prisma Migrate——聲明式數(shù)據(jù)建模和可自定義的遷移
          • Prisma Studio——現(xiàn)代化的用戶界面,可查看和編輯數(shù)據(jù)

          這些工具可以在任何Node.js或TypeScript項(xiàng)目中一起或單獨(dú)采用。Prisma當(dāng)前支持PostgreSQL,MySQL,SQLite,SQL Server(預(yù)覽版)。MongoDB的連接器正在開(kāi)發(fā)中,請(qǐng)?jiān)诖颂幾?cè)Early Access程序。

          數(shù)據(jù)庫(kù)是很難的

          使用數(shù)據(jù)庫(kù)是應(yīng)用程序開(kāi)發(fā)中最具挑戰(zhàn)性的領(lǐng)域之一。數(shù)據(jù)建模,模式遷移和編寫數(shù)據(jù)庫(kù)查詢是應(yīng)用程序開(kāi)發(fā)人員每天處理的常見(jiàn)任務(wù)。

          在Prisma,我們發(fā)現(xiàn)Node.js生態(tài)系統(tǒng)雖然在構(gòu)建數(shù)據(jù)庫(kù)支持的應(yīng)用程序中越來(lái)越流行,但并未為應(yīng)用程序開(kāi)發(fā)人員提供處理這些任務(wù)的現(xiàn)代工具。

          應(yīng)用程序開(kāi)發(fā)人員應(yīng)該關(guān)心數(shù)據(jù),而不是SQL

          隨著工具變得更加專業(yè)化,應(yīng)用程序開(kāi)發(fā)人員應(yīng)該能夠?qū)W⒂跒榻M織實(shí)現(xiàn)增值功能,而不必花費(fèi)時(shí)間通過(guò)編寫膠合代碼來(lái)遍歷應(yīng)用程序的各個(gè)層。

          Prisma-Node.js和TypeScript的完整ORM

          盡管Prisma解決了與傳統(tǒng)ORM相似的問(wèn)題,但是其對(duì)這些問(wèn)題的處理方式卻根本不同。

          Prisma模式中的數(shù)據(jù)建模

          使用Prisma時(shí),您可以在Prisma模式中定義數(shù)據(jù)模型。以下是Prisma模型的樣例:

          model Post {
          id Int @id @default(autoincrement())
          title String
          content String?
          published Boolean @default(false)
          author User? @relation(fields: [authorId], references: [id])
          authorId Int?
          }

          model User {
          id Int @id @default(autoincrement())
          email String @unique
          name String?
          posts Post[]
          }

          這些模型中的每一個(gè)都映射到基礎(chǔ)數(shù)據(jù)庫(kù)中的表,并充當(dāng)Prisma Client提供的生成的數(shù)據(jù)訪問(wèn)API的基礎(chǔ)。Prisma的VS Code擴(kuò)展提供語(yǔ)法高亮顯示,自動(dòng)補(bǔ)全,快速修復(fù)和許多其他功能,使數(shù)據(jù)建模具有神奇而令人愉悅的體驗(yàn)。

          使用Prisma Migrate進(jìn)行數(shù)據(jù)庫(kù)遷移

          Prisma Migrate將Prisma模式轉(zhuǎn)換為所需的SQL,以創(chuàng)建和更改數(shù)據(jù)庫(kù)中的表??梢酝ㄟ^(guò)Prisma CLI提供的 prisma migration 命令使用它。

          PostgreSQL:

          CREATE TABLE "Post" (
          "id" SERIAL NOT NULL,
          "title" TEXT NOT NULL,
          "content" TEXT,
          "published" BOOLEAN NOT NULL DEFAULT false,
          "authorId" INTEGER,

          PRIMARY KEY ("id")
          );

          CREATE TABLE "User" (
          "id" SERIAL NOT NULL,
          "email" TEXT NOT NULL,
          "name" TEXT,

          PRIMARY KEY ("id")
          );

          CREATE UNIQUE INDEX "User.email_unique" ON "User"("email");

          ALTER TABLE "Post" ADD FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;

          在基于Prisma模式自動(dòng)生成SQL的同時(shí),您可以輕松地根據(jù)自己的特定需求對(duì)其進(jìn)行自定義。通過(guò)這種方法,Prisma Migrate在生產(chǎn)率和控制力之間取得了很好的平衡。

          使用Prisma Client進(jìn)行直觀且類型安全的數(shù)據(jù)庫(kù)訪問(wèn)

          與Prisma Client一起使用的主要好處是,它使開(kāi)發(fā)人員可以在對(duì)象中進(jìn)行思考,因此提供了一種熟悉且自然的方式來(lái)推理其數(shù)據(jù)。

          Prisma Client沒(méi)有模型實(shí)例的概念。相反,它有助于制定始終返回純JavaScript對(duì)象的數(shù)據(jù)庫(kù)查詢。多虧了生成的類型,您也為這些查詢獲得了自動(dòng)補(bǔ)全功能。

          另外,作為對(duì)TypeScript開(kāi)發(fā)者的一種獎(jiǎng)勵(lì)。Prisma Client查詢的所有結(jié)果都是完全類型化的。事實(shí)上,Prisma提供了任何TypeScript ORM中最強(qiáng)大的類型安全保證(你可以在這里閱讀與TypeORM的類型安全比較)。

          Prisma Studio的現(xiàn)代管理界面

          Prisma還為你的數(shù)據(jù)庫(kù)提供了一個(gè)現(xiàn)代化的管理界面--想想看phpMyAdmin,但在2021年。??

          Prisma適合任何技術(shù)棧

          Prisma與你構(gòu)建的應(yīng)用程序無(wú)關(guān),并將很好地補(bǔ)充你的技術(shù)棧,無(wú)論你喜歡的技術(shù)是什么。你可以在這里找到更多關(guān)于Prisma如何與你喜歡的框架或庫(kù)一起工作的信息。

          為任務(wù)關(guān)鍵型應(yīng)用程序的生產(chǎn)做好準(zhǔn)備

          Prisma在過(guò)去三年中發(fā)展了很多,我們非常高興與開(kāi)發(fā)人員社區(qū)分享結(jié)果。

          從GraphQL到數(shù)據(jù)庫(kù)

          自從我們開(kāi)始構(gòu)建開(kāi)發(fā)人員工具以來(lái),作為一家公司,在過(guò)去的幾年中,我們經(jīng)歷了許多主要的產(chǎn)品迭代和發(fā)展過(guò)程:

          Prisma是我們從成為GraphQL生態(tài)系統(tǒng)的早期創(chuàng)新者中學(xué)到的經(jīng)驗(yàn)教訓(xùn)以及我們從小型創(chuàng)業(yè)公司到大型企業(yè)的各種規(guī)模的數(shù)據(jù)層獲得的見(jiàn)解的結(jié)果。

          自三年前首次發(fā)布以來(lái),Prisma已被成千上萬(wàn)的公司使用,Prisma經(jīng)過(guò)了實(shí)戰(zhàn)測(cè)試,并準(zhǔn)備用于關(guān)鍵任務(wù)應(yīng)用程序。

          我們關(guān)心開(kāi)發(fā)人員

          Prisma是開(kāi)放開(kāi)發(fā)的。我們的產(chǎn)品和工程團(tuán)隊(duì)正在監(jiān)控GitHub的問(wèn)題,通常在問(wèn)題打開(kāi)后24小時(shí)內(nèi)做出響應(yīng)。

          新版本每?jī)芍馨l(fā)布一次,包含新特性、bug修復(fù)和大量改進(jìn)。每次發(fā)布后,我們都會(huì)在Youtube上直播新功能,并從社區(qū)獲得反饋。

          我們還會(huì)嘗試通過(guò)專門的社區(qū)支持團(tuán)隊(duì),在開(kāi)發(fā)人員提出關(guān)于Prisma的任何問(wèn)題時(shí),無(wú)論是在Slack,GitHub討論區(qū)還是Stackoverflow上,都可以為他們提供幫助。

          這是我們的社區(qū)數(shù)量:

          公司在生產(chǎn)中使用Prisma

          我們很高興看到Prisma如何幫助各種規(guī)模的公司提高生產(chǎn)力并更快地交付產(chǎn)品。

          在我們的旅程中,阿迪達(dá)斯、HyreCar、Agora Systems、Labelbox等公司為我們提供了關(guān)于如何發(fā)展產(chǎn)品的寶貴意見(jiàn)。我們有幸與一些最具創(chuàng)新性和獨(dú)創(chuàng)性的技術(shù)領(lǐng)導(dǎo)者合作。

          如果您想了解Prisma如何幫助這些公司提高生產(chǎn)力,請(qǐng)查看以下資源:

          • Rapha

            • blog——Prisma如何幫助Rapha管理其移動(dòng)應(yīng)用程序數(shù)據(jù)
            • Talk——Prisma在Rapha
          • iopool

            • blog——iopool如何使用Prisma在不到6個(gè)月的時(shí)間內(nèi)重構(gòu)其應(yīng)用程序
            • Talk——Prisma在ipool

          從原型到開(kāi)發(fā)再到生產(chǎn)

          最好的開(kāi)發(fā)者工具是那些不走尋常路的工具,并能輕松地適應(yīng)項(xiàng)目的日益復(fù)雜化。這正是我們?cè)O(shè)計(jì)Prisma的方式。

          Prisma有內(nèi)置的工作流程,適用于開(kāi)發(fā)生命周期的所有階段,從原型設(shè)計(jì)到開(kāi)發(fā),到部署,到CI/CD,到測(cè)試等等。

          下一代Web框架基于Prisma構(gòu)建

          我們特別感到謙虛,許多框架和庫(kù)作者選擇Prisma作為其工具的默認(rèn)ORM。以下是一些使用Prisma的高級(jí)框架的選擇:

          • RedwoodJS——基于React和GraphQL的全??蚣?/section>
          • Blitz——基于Next.js的全??蚣?/section>
          • KeystoneJS——無(wú)頭CMS
          • Wasp——用于基于React開(kāi)發(fā)全棧Web應(yīng)用程序的DSL
          • Amplication——用于基于React和NestJS構(gòu)建全棧應(yīng)用程序的工具集

          開(kāi)源及其他

          我們是一家由VC資助的公司,其團(tuán)隊(duì)熱衷于改善應(yīng)用程序開(kāi)發(fā)人員的生活。當(dāng)我們通過(guò)構(gòu)建開(kāi)源工具開(kāi)始我們的旅程時(shí),我們對(duì)Prisma的長(zhǎng)期愿景遠(yuǎn)比構(gòu)建“僅” ORM更大。

          在我們最近的企業(yè)活動(dòng)和Prisma聚會(huì)中,我們開(kāi)始分享這一愿景,我們稱之為應(yīng)用程序數(shù)據(jù)平臺(tái)

          Prisma的愿景是使Facebook、Twitter和Airbnb等公司使用的定制數(shù)據(jù)訪問(wèn)層民主化,并使其適用于所有規(guī)模的開(kāi)發(fā)團(tuán)隊(duì)和組織。

          這個(gè)想法主要是受到Facebook、Twitter和Airbnb等公司的啟發(fā),這些公司在其數(shù)據(jù)庫(kù)和其他數(shù)據(jù)源的基礎(chǔ)上建立了定制的數(shù)據(jù)訪問(wèn)層,使應(yīng)用程序開(kāi)發(fā)人員更容易以安全和高效的方式訪問(wèn)他們需要的數(shù)據(jù)。

          Prisma的目標(biāo)是使這種自定義數(shù)據(jù)訪問(wèn)層的思想民主化,并使其可用于任何規(guī)模的開(kāi)發(fā)團(tuán)隊(duì)和組織。


          最近文章

          粉絲福利

          視頻教程《教你玩轉(zhuǎn)手機(jī)攝影,隨手拍出好照片》7天有效,需要的速??!獲取資源請(qǐng)?jiān)诠娞?hào)對(duì)話框中回復(fù)關(guān)鍵字:JK06,關(guān)鍵字全部大寫哦!更多福利資料請(qǐng)查看公眾號(hào)菜單。

          瀏覽 131
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一道无码在线视 | 国产永久性人人视频 | 中国 免费XXXX18在线观看 | 国产无码片 | 日本人人操 |