Prisma学习笔记

一、什么是Prisma?

Prisma是Nodejs平台流行的数据库关系映射框架,可以便捷实现数据库的增删改查、

二、Prisma使用

1、下载Prisma

npm install prisma -D

初始化Prisma,并设置要连接的数据库

npx prisma init --datasource-provider 【要连接的数据库】

2、prisma中的模型

表示底层数据库中的表或者集合。
生成 Prisma Client API 的基础
通过使用 prisma migrate (迁移)经模型映射到数据库表当中。

prisma studio 是 prisma 的 数据库图形化界面,可以查看和编辑数据库。

npx prisma studio

安装 prisma 客户端

npm install @prisma/client

每当更新 Prisma 模式时,都需要运行命令prisma db push来创建新索引并重新生成 Prisma Client

安装@prisma/client包会调用该prisma generate命令,该命令会读取您的 Prisma 模式并生成Prisma 客户端代码。代码默认生成到文件夹中node_modules/.prisma/client。

更改数据模型后,您需要手动重新生成 Prisma Client 以确保node_modules/.prisma/client更新其中的代码:

prisma generate

一旦更改了 .env 文件,执行 pnpx prisma db push 来更新 prisma/client

Prisma Client只负责向数据库发送查询

3、prisma client常见的数据访问api

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

await prisma.user.findUnique(...)
await prisma.user.findMany(...)
await prisma.user.create(...)
await prisma.user.update(...)
await prisma.user.delete(...)
await prisma.user.upsert(...)

4、schema.prisma

schema.prisma由数据源、生成器、数据模型定义组成

Prisma模式文件(简称模式文件、Prisma模式或模式)是prisma设置的主要配置文件。

        数据源:指定prisma应该连接的数据源的详细信息(如PostgreSQL数据库)

        生成器:指定应根据数据模型生成那些客户端(如Prisma Client)

        数据模型定义:指定应用程序模型(每个数据源的数据形状)及其关系

当想 自定义 prisma 模式文件名称时,在使用 prisma generate 命令生成 prisma 客户端时,需要携带参数指明文件路径。

5、命名

模式文件的默认名称是schema.prisma。当模式文件这样命名时,Prisma Cli将在调用Cli命令的目录中自动检测它。

prisma generate --schema ./datdabase/myschema.prisma

将模型名称映射到表或集合

Prisma模型命名约定(单数形式,PascalCase)API不要总是匹配数据库中的表名。在数据库中命名表或集合的常用方法是使用复数形式和蛇箱符号(如 comments)。当使用comments的表检查数据库时,结果Prisma模型将如下:

model comments {
    //Fields
}

但仍然可以遵守命名约定,无需comments通过使用@@map API属性

model Comment {
    //Fields
    
    @@map('comments')
}

三、PostgreSQL连接Prisma

PostgreSQL 数据源连接器将 Prisma 连接到 PostgreSQL 数据库服务。

为了连接到 PostgreSQL 数据库服务,你需要在你的 Prisma schema 文件 中配置一个 datasource 块:

schema.prisma

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

在datasource块中有两个字段:

        provider:指定PostgreSQL数据源连接器

        url:指定PostgreSQL数据库的连接URL。可以使用环境变量来指定

1、连接详情

连接URL

Prisma的数据库连接URL基于PostgreSQL的官方格式,但不支持所有参数,例如schema。

PostgreSQL连接URL需要的组件概述:

基础URL(Base URL)和路径(path)

下面是一个基础URL(base url)和路径(path)的例子

postgresql://USER:PASSWORD@HOST:PORT/DATABASE

基础URL的组成部分:

参数

连接url可以接受参数

postgresql://USER:PASSWORD@HOST:PORT/DATABASE?KEY1=VALUE&KEY2=VALUE&KEY3=VALUE

可以使用的参数

2、配置SSL连接

如果你的数据库使用 SSL,你可以在连接 URL 中添加各种参数。下面是可能用到的参数的概述:

  • sslmode=(disable|prefer|require):
    • prefer (默认): 如果可能的话,优先选择 TLS,接受纯文本连接。
    • disable: 不使用 TLS。
    • require: 必须使用 TLS,如果不能则连接失败。
  • sslcert=<PATH>: 服务器证书的路径。这是由数据库服务器用来签署客户证书的根证书。如果该证书不存在于你的系统的受信任的证书存储中时你需要提供它,对于谷歌云,你可能需要提供 server-ca.pem。证书路径是 相对于 ./prisma 目录的
  • sslidentity=<PATH>: 从客户证书和密钥创建的 PKCS12 证书数据库的路径。这是一个 PKCS12 格式的 SSL 身份文件,你将使用客户的密钥和客户的证书生成它。它将这两个文件合并为一个文件,并通过密码来保护它们(见下一个参数)。你可以通过使用以下命令(使用 openssl)来使用你的客户密钥和客户证书创建这个文件:.
openssl pkcs12 -export -out client-identity.p12 -inkey client-key.pem -in client-cert.pem
  • sslpassword=<PASSWORD>: 用来保护 PKCS12 文件的密码。上一步中列出的 openssl 命令会在创建 PKCS12 文件时要求提供密码,你需要在这里提供同样的密码。
  • sslaccept=(strict|accept_invalid_certs):
    • strict: 证书中任何缺失的值都会导致错误。对于谷歌云,特别是如果数据库没有域名,证书可能会遗漏域名/IP地址,导致连接时出现错误。
    • accept_invalid_certs (默认): 绕过这个检查。请注意此设置可能会带来的安全后果。

创建一个SSL连接到你的数据库,你需要

        一个根证书文件

        一个PKCS12客户端文件

        一个PKCS12文件密码

你的数据库连接URL将类似如下:

postgresql://USER:PASSWORD@HOST:PORT/DATABASE?sslidentity=client-identity.p12&sslpassword=mypassword&sslcert=rootca.cert

3、通过socket连接

要通过 socket 连接到你的 PostgreSQL 数据库,你必须在连接 URL 中添加一个 host 字段作为 查询参数(而不是将其设置为 URI 的 host 部分)。 然后这个参数的值必须指向包含 socket 的目录,例如:postgresql://USER:POST@localhost/database?host=/var/run/postgresql/

注意,localhost 是必须的,值本身被忽略,可以是任何东西。

四、Prisma迁移

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值