自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么你要考慮使用Prisma

開源
Prisma是一個(gè)開源的數(shù)據(jù)庫(kù)工具鏈項(xiàng)目,幫助開發(fā)人員更快地構(gòu)建應(yīng)用程序并減少錯(cuò)誤,支持PostgreSQL、MySQL、MongoDB、SQL Server和SQLite。

Prisma正迅速成為我的首選ORM框架,這是有原因的。在我們創(chuàng)建一個(gè)web項(xiàng)目時(shí),設(shè)置鏈接數(shù)據(jù)庫(kù)一直是一項(xiàng)比較繁瑣的任務(wù)。雖然ORM已經(jīng)存在了一段時(shí)間,并且在大多數(shù)情況下已經(jīng)簡(jiǎn)化了這個(gè)過程。然而,它們似乎總是在某個(gè)方面有所欠缺。

對(duì)于一個(gè)開發(fā)人員來說,每一個(gè)ORM框架,通常都有一些開發(fā)人員希望它能做得更好一點(diǎn)。但對(duì)我來說,它這個(gè)設(shè)計(jì)模式紿我?guī)砹丝焖俨榭春途庉嫈?shù)據(jù)的能力。Prisma為我解決這些問題的同時(shí)也解決了一些我不知道的問題。

什么是Prisma

Prisma稱自己為下一代 Node.js、TypeScript、Go 的數(shù)據(jù)庫(kù) ORM框架

Prisma是一個(gè)開源的數(shù)據(jù)庫(kù)工具鏈項(xiàng)目,幫助開發(fā)人員更快地構(gòu)建應(yīng)用程序并減少錯(cuò)誤,支持PostgreSQL、MySQL、MongoDB、SQL Server和SQLite。

Prisma Schema

Prisma的核心是通過Primsa Schema文件來定義數(shù)據(jù)模型。它是用一種叫做PSL(Prisma Schema Language)的屬性語言編寫的,這需要幾分鐘時(shí)間來熟悉。Schema文件主要有三個(gè)主要組成部分。首先是你的數(shù)據(jù)源datasource,這個(gè)配置數(shù)據(jù)庫(kù)的URL和數(shù)據(jù)庫(kù)類型的地方。在這種情況下,provider用來表示使用的數(shù)據(jù)庫(kù)的類型。如下所示:

datasource db {
url = env("DATABASE_URL")
provider = "postgresql"
}

下一個(gè)部分是生成器(Generator)字段。這個(gè)字段指定了應(yīng)該根據(jù)數(shù)據(jù)模型生成什么客戶端。這個(gè)功能就是讓你如何使用Prisma生成的客戶端來CRUD。這些我們稍后會(huì)介紹,這一部分看起來像這樣:?

generator client {
provider = "prisma-client-js"
}

最后,我們要定義我們的應(yīng)用模型數(shù)據(jù)模型(Data model)在數(shù)據(jù)庫(kù)中的字段 ,這將是這個(gè)文件的重點(diǎn)。在這里你創(chuàng)建你的應(yīng)用模型和數(shù)據(jù)間的映射關(guān)系。這一部分也需要最長(zhǎng)的時(shí)間來適應(yīng),然而,它看起來仍然會(huì)顯得很熟悉。PSL不是創(chuàng)建普通的JS對(duì)象,而是以一種不同的方式來格式化模型,但所有的字段都與你習(xí)慣的交互方式相同。下面這個(gè)就是一個(gè)用戶模型的例子:

model User {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
email String @unique
name String?
role Role @default(USER)
posts Post[]
}

這個(gè)用戶模型我們有一個(gè)有六個(gè)字段,"id "是一個(gè)整數(shù),并有一個(gè)默認(rèn)值且自增。還有一些標(biāo)準(zhǔn)的,其它的、唯一的類型屬性你可以在 官方文檔) 中探索。你的下一個(gè)問題可能是 "模型間的關(guān)聯(lián)關(guān)系是如何工作的?",幸好它們相當(dāng)簡(jiǎn)單易懂。下面是一個(gè)用戶發(fā)的帖子的模型。

model Post {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
published Boolean @default(false)
title String @db.VarChar(255)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}

這個(gè)關(guān)聯(lián)關(guān)系定義在帖子的作者字段中。意思非常簡(jiǎn)單,author字段是一個(gè)用戶,它引用了用戶模型User。然后我們創(chuàng)建一個(gè)關(guān)聯(lián)關(guān)系,用貼子模型Post上的字段 "authorId "引用用戶模型User中的 "id "字段。最后一個(gè)要解決的大問題是使你的數(shù)據(jù)庫(kù)與你的定義的模型保持同步,Prisma通過Prisma Migrate做到這一點(diǎn)。這是一個(gè)簡(jiǎn)單的命令行,可以將你的數(shù)據(jù)庫(kù)與你可能有的任何變化一起遷移,具體可參考 官方文檔的遷移功能。<a name="v8LM3"></a>。

CRUD

記住你的Prisma Schema文件中的生成器Generator部分,這里是你要使用的地方。你的Generator塊是Prisma用來決定如何建立其客戶端的東西。它的建立是為了對(duì)你的數(shù)據(jù)進(jìn)行類型安全的查詢。這意味著查詢你查詢數(shù)據(jù)的操作函數(shù)將變得更加容易理解和使用。

const newUser = await prisma.user.create({
data: {
name: 'Alice',
email: 'alice@prisma.io',
},
})
const users = await prisma.user.findMany()

這是一個(gè)創(chuàng)建和查找用戶的例子。當(dāng)為你的數(shù)據(jù)生成一個(gè)客戶端時(shí),Prisma將方法添加到Prisma對(duì)象中,與你的數(shù)據(jù)完全相關(guān)。繼續(xù)以用戶和帖子為例,我們也將能夠做到這一點(diǎn)。

prisma.post.create()

如果要想進(jìn)一步了解更多復(fù)雜的查詢操作,請(qǐng)查看這里。<a name="DrufO"></a>。

Prisma的好處

Introspection

圖片


這里至少有兩個(gè)特點(diǎn)讓我至少考慮它,對(duì)于任何項(xiàng)目,即使是那些我已經(jīng)在使用不同的ORM的項(xiàng)目。Introspection是一項(xiàng)功能,它允許你使用你已經(jīng)創(chuàng)建的數(shù)據(jù)庫(kù)來生成一個(gè)與你的數(shù)據(jù)庫(kù)相匹配的Prisma模式。因此,如果你有一個(gè)已經(jīng)按你喜歡的方式設(shè)置的數(shù)據(jù)庫(kù),但想嘗試Prisma,這個(gè)過程是無縫和簡(jiǎn)單的。你的Prisma Schema文件已經(jīng)生成,你可以立即開始使用Prisma。所有這些都在一個(gè)單一的命令中完成。

prisma db pull

Prisma Studio

圖片

Prisma還創(chuàng)建了一個(gè)本地的web客戶端,你可以隨時(shí)的改變或更新數(shù)據(jù)。Prisma Studio對(duì)于快速檢查數(shù)據(jù)或改變一些東西進(jìn)行測(cè)試是非常好的。它可能不像PgAdmin或MySql Workbench那樣先進(jìn),但它仍然為大多數(shù)數(shù)據(jù)庫(kù)工作提供了足夠的選擇。我唯一不滿意的是,你不能像使用Sanity那樣定制外觀界面。

責(zé)任編輯:姜華 來源: 新鈦云服
相關(guān)推薦

2023-03-08 15:51:06

NixOS

2019-08-22 09:25:02

云計(jì)算云備份數(shù)據(jù)

2018-05-23 00:20:29

2015-07-28 14:22:09

BAT

2013-09-22 09:55:23

碼農(nóng)程序員

2016-03-08 09:50:42

2022-12-26 00:25:06

2010-10-09 09:20:08

.NET

2020-06-23 14:09:49

枚舉JDK場(chǎng)景

2021-06-17 06:19:20

存儲(chǔ)SQL數(shù)據(jù)庫(kù)

2015-05-25 15:31:56

C語言學(xué)習(xí)和使用 C 語言

2018-02-08 10:47:19

存儲(chǔ)技術(shù)列存儲(chǔ)

2009-05-26 09:00:59

ScalaJava面向?qū)ο?/a>

2023-09-21 16:17:48

數(shù)據(jù)驅(qū)動(dòng)運(yùn)營(yíng)

2011-08-01 14:33:44

SQL

2014-04-25 10:05:42

OpenStack私有云公共云

2022-05-16 09:27:37

UbuntuUbuntu LTS

2024-08-05 01:24:54

2015-08-06 10:14:15

造輪子facebook

2022-08-15 08:27:02

基站網(wǎng)絡(luò)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)