在 Next 中, ORM 框架 Prisma 使用

Prisma 介绍

Prisma 是一个 ORM 框架,主要用于 Node.js 或 TypeScript 作为后端开发的应用,主要有三部分组成:

  • Prisma Client:自动生成且类型安全的查询构建器,适用于 Nodex.js 和 TS;
  • Prisma Migrate: 迁移系统,当项目 Model 结果或字段发生变化后,可以将数据自动映射到 DB ,进行对应更新
  • Prisma Studio GUI 界面,用于查看和编辑 DB 中的数据

日常开发中最常用 为 Prisma Client ,Prisma 支持关系型数据库如MySQL、PostgreSQL,及非关系型数据库 MongoDB 等

Prisma 使用
1,安装 Prisam 命令行
npm install prisma --save-dev
2,prisma 初始化

2.1,借助 Prisma CLI 的 init 命令配置 Prisma ,进行初始化;在 t项目根目录文件夹下,输入以下命令

npx prisma init --datasource-provider mongodb

这里将 mongo 作为配置的 DB 数据库;命令执行后,程序将会自动生成一个 prisma 文件夹,在 prisma 文件夹下会有一个 schema.prisma 文件用将 MongoDB 配置为项目的 DB

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schemagenerator client {provider = "prisma-client-js"
}datasource db {provider = "mongodb"url      = env("DATABASE_URL")
} 

2.2,创建一个 .env 文件,将 mongodb 的链接地址赋值给 DATABASE_URL 环境变量,如下

DATABASE_URL="mongodb://root:example@localhost:27017/db_next?authSource=admin"

2.3 在 schema.prisma 文件中,定义应用中需要用到 Model ,如下:

model Post {id     String @id @default(auto()) @map("_id") @db.ObjectIdtitle  StringuserId String @db.ObjectIduser   User   @relation(fields: [userId], references: [id])
}model User {id    String @id @default(auto()) @map("_id") @db.ObjectIdemail Stringposts Post[]
}

2.4,执行 npm install @prisma/client ,安装 @prisma/client

2.5,调用 npx prisma generate 更新一个新的版本Prisma Client 用于当前模型
在这里插入图片描述

3,借助 Prisma Client 创建 Query 语句,进行数据 读写;

为了测试 Prisma Client 连通性,可以创建一个 ts 脚本,分别执行以下代码,查看终端运行结果

// lib/index.ts 文件const prisma = new PrismaClient()// 读操作
async function main() {// 下入客户端const allUsers = await prisma.user.findMany()console.log('result is ', allUsers)
}main().catch(async (e) => {console.error(e)console.log('报错error is ', e)}).finally(async () => {// 关闭 prisma 客户端await prisma.$disconnect()})

输入以下命令用于执行脚本

npx ts-node .\lib\index.ts## ouput
result is  []

由结果可以看到,prisma client 已经可以成功连接到 mongodb,并且查询到目前的 用户数据(user) 为空,此脚本只是用 prisma 操作 mongodb 的一个实例,具体使用可以项目业务进行逻辑调整

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/678008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux系统非关系型数据库redis

redis 介绍redis的特点:缓存 安装安装单机版redisredis的相关工具 介绍 redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库 redis的官网:redis.ioredis的特点: 丰富的数据结构 支持持久化 支持事务 支持主从缓存 类型 …

初步探索Pyglet库:打造轻量级多媒体与游戏开发利器

目录 pyglet库 功能特点 安装和导入 安装 导入 基本代码框架 导入模块 创建窗口 创建控件 定义事件 运行应用 程序界面 运行结果 完整代码 标签控件 常用事件 窗口事件 鼠标事件 键盘事件 文本事件 其它场景 网页标签 音乐播放 图片显示 祝大家新…

视频直播系统架构的设计与实现

视频直播系统作为一种实时性强、用户互动性高的应用,其架构设计至关重要。本文将介绍如何设计和实现一个稳定、高性能的直播系统架构,以提供良好的用户体验和可靠的服务。 1. 系统架构概述 - 介绍视频直播系统的整体架构,包括客户端、服务…

01-Spring实现重试和降级机制

主要用于在模块调用中,出现失败、异常情况下,仍需要进行重复调用。并且在最终调用失败时,可以采用降级措施,返回一般结果。 1、重试机制 我们采用spring 提供的retry 插件,其原理采用aop机制,所以需要额外…

1.5 Binance_interface API 币本位合约行情

Binance_interface API 币本位合约行情 Github地址PyTed量化交易研究院 1. API 币本位合约行情接口总览 方法解释Pathget_ping测试服务器连通性 PING/dapi/v1/pingget_time获取服务器时间/dapi/v1/timeget_exchangeInfo获取交易规则和交易对/dapi/v1/exchangeInfoget_depth深…

SERVLET间通信

在Web应用程序中,应用程序的servlet等各种组件之间可能需要通信以便处理客户机请求。例如,假设Web应用程序中有一个servlet显示组织的版权信息。您可以使用各种servelt通信技术将此servlet的内容纳入到需要显示版权信息的所有其他应用程序servlet中。同样,如果处理请求时发生…

Maven:设定项目编码

今天在DOS下执行mvn compile命令时报错说缺少必要符号,事实上根本就没有缺少,但何以如此呢,为啥eclipse在编译时就没有这问题呢? 原因是编码的问题造成的! eclipse在编译的使用使用的是UTF-8,因为整个项目设置的是UTF…

基于JavaWeb的网上订餐项目

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88825723?spm1001.2014.3001.5503 Java项目-16 浏览商品,会员登录,添加购物车,进行配送等功能 文件代码功能介绍 1.Src下的java文件存放的我们后端的…

JDK新特性

JDK新特性 函数式接口和Lambda 表达式Stream流操作新日期API操作其他新特性 Lambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码 像数据一样进行传递)。可以写出更简洁、更 灵活的代码。作为一种更紧凑的代码…

15000+POC漏洞扫描工具

0x01 工具介绍 scan4all拥有15000PoC漏洞扫描,23种应用弱口令爆破,7000Web指纹,146种协议,90000规则Port扫描。集成 vscan、nuclei、ksubdomain、subfinder等,充分自动化进行扫描。是一款Fuzz、HW打点、BugBounty神器…

瑞吉外卖实操笔记五----店铺营业状态设置与用户端微信登录实现

店铺营业状态设置与用户端微信登录实现 一.店铺营业状态设置 由于店铺营业状态可以算是一个单独的内容,没有必要为其单独设置一个表,因此将营业状态单独设置到redis缓存中。   设置营业店铺状态只需要一个获取状态的接口即可; RestContro…

CSP-202009-2-风险人群筛查

CSP-202009-2-风险人群筛查 解题思路 检查是否经过高危区 (x > x1) && (x < x2) && (y > y1) && (y < y2) 检查坐标是否在高危区域内&#xff0c; !isPassed 确保仅在第一次经过高危区域时增加 pass 计数。如果条件成立&#xff0c;表示…

C#系列-C#访问MongoDB+redis+kafka(7)

目录 一、 C#中访问MongoDB. 二、 C#访问redis. 三、 C#访问kafka. C#中访问MongoDB 在C#中访问MongoDB&#xff0c;你通常会使用MongoDB官方提供的MongoDB C#/.NET Driver。这个驱动提供了丰富的API来执行CRUD&#xff08;创建、读取、更新、删除&#x…

Cpp-3

文件和流 /*1.文件操作这需要用到 C 中另一个标准库 fstream2.对于标准库 fstream ,它定义了三个新的数据类型:数据类型 描述ofstream 表示输出文件流&#xff0c;用于创建文件并向文件写入信息ifstream 表示输入文件流&#xff0c;用于从文件读取信息fstrea…

java设计模式之中介者模式

中介者模式&#xff08;Mediator Pattern&#xff09; 基本介绍 中介者模式&#xff0c;用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用&#xff0c;从而使其解耦松散。而且可以独立地改变它们之间的交互。中介者模式属于行为型模式。比如MVC模…

C#,欧拉常数(Euler Constant)的算法与源代码

1 欧拉常数 欧拉常数最先由瑞士数学家莱昂哈德 欧拉 (Leonhard Euler) 在1735年发表的文章《De Progressionibus harmonicus observationes》中定义。欧拉曾经使用γ作为它的符号&#xff0c;并计算出了它的前6位&#xff0c;1761年他又将该值计算到了16位 。 欧拉常数最先由瑞…

Sql Server数据库软件里如何查看当前Sql Server服务运行的状态?

有时候我们会遇到sql server服务停止的情况&#xff0c;这可能会导致数据库无法正常访问和操作。 查看当前Sql Server服务运行的状态&#xff1a; 可以通过以下代码来检查服务状态&#xff1a; --检查sql server服务状态&#xff1a;EXEC xp_servicecontrol querystate, MSSQ…

2/10 BFS初探

其实在我看来解决全排列问题&#xff0c;核心还是顺序&#xff0c;想清楚结束条件&#xff0c;然后输出&#xff0c;以n3为例 #include<iostream> using namespace std; const int N 10; int path[N];//保存序列 int state[N];//数字是否被用过 int n; void dfs(int u) …

ubuntu彻底卸载cuda 重新安装cuda

sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" \"*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*" cuda10以上 cd /usr/local/cuda-xx.x/bin/ s…

Mac电脑清空特别大型旧文件如何一键清理?

在我们的数字生活中&#xff0c;Mac电脑常常承载着大量个人资料和重要文件。但当我们决定把自己的Mac送给亲人或朋友使用时&#xff0c;面临的首要任务便是彻底且高效地清空所有个人数据&#xff0c;以保证隐私安全。传统的删除方法虽然简单&#xff0c;但往往不能彻底清除所有…