在 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.hqwc.cn/news/462105.html

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

相关文章

NOVATEK显示技术系列之CEDSCHPI Training差异简介

CEDS的数据封包格式:首先CEDS数据封包包括三个部分: Training Pattern即Phase1Control Data 即 Phase2RGB Data 即Phase3 Power on Timing: 工作原理: Power ON时,TCON会发Training Pattern,当COF接受Tr…

防疫物资管理新篇章:Java+SpringBoot实战

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

python智慧养老系统—养老信息服务平台vue

本论文中实现的智慧养老系统-养老信息服务平台将以管理员和用户的日常信息维护工作为主,主要涵盖了系统首页,个人中心,用户管理,养老资讯管理,养生有道管理,养老机构管理,系统管理等功能&#x…

【芯片设计- RTL 数字逻辑设计入门 6 -- 带同步复位的D触发器 RTL实现及testbench 验证】

文章目录 带同步复位的D触发器Verilog 代码testbench 代码编译及仿真问题小结 带同步复位的D触发器 同步复位 :复位只能发生在在clk信号的上升沿,若clk信号出现问题,则无法进行复位。 Verilog 代码 // timescale ins/1nsmodule flopr (inpu…

Ps:将图层导出到文件

Ps菜单:文件/导出/将图层导出到文件 Export/Layers to Files 在需要单独处理或保存 Photoshop 文档中的每个图层为独立文件时,可使用“将图层导出到文件” Layers to Files命令。 此命令可以将一个包含多个图层的 PSD 文件中的每个图层导出为单独的文件&…

图像处理常用算法—6个算子 !!

目录 前言 1、Sobel 算子 2、Isotropic Sobel 算子 3、Roberts 算子 4、Prewitt 算子 5、Laplacian算子 6、Canny算子 前言 同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。 需要说明的是:边缘和物体间的边界并不…

python视频播放列表信息库之m3u8使用详解

m3u8库是什么? m3u8是一个用于解析和操作M3U8文件的Python库。M3U8文件,是指使用UTF-8编码格式的M3U文件,它们通常用于播放列表文件,尤其是在HTTP Live Streaming(HLS)中。简单来说,m3u8库能帮…

通俗易懂:快速排序算法全解析

快速排序(Quick Sort)是一种高效的分治排序算法,它以其出色的性能和广泛的应用而闻名。本文将深入讲解快速排序的原理、步骤和时间复杂度,并探讨其优势和应用场景。 快速排序原理 快速排序的核心思想是通过选择一个基准元素&…

【十三】【C++】vector简单实现

代码实现 /*vector类简单实现*/ #if 1 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std; #include <vector> #include <algorithm> #include <crtdbg.h> #include <assert.h> #include <string.h>namespace MyVe…

解决IntellIJ Idea内存不足

突然有一天我在IDEA打开两个项目时&#xff0c;发生了报错&#xff0c;说我内存不足&#xff0c;我这电脑内存16G怎么会内存不足。下面是我的解决方案。 IntelliJ IDEA 报告内存不足的原因通常与以下几个因素有关&#xff1a; 项目规模较大&#xff1a;如果您正在开发的项目非…

Windows 安装 Linux子系统,并为子系统设置图形化界面

安装WSL 在控制面板中打开下面的选项&#xff1a; 执行下面的命令&#xff0c;更新到WSL2版本&#xff0c;并在以后创建子系统的时候默认采用WSL2的版本&#xff1a; wsl --update wsl --set-default-version 2在Window上安装连接工具&#xff1a; 在Window上下载VcXsrv&…

开源个人订阅跟踪器Wallos

本文软件由网友 P家单推人 推荐&#xff1b; 什么 Wallos &#xff1f; Wallos 是一款功能强大、开源且可自我托管的网络应用程序&#xff0c;旨在让您轻松管理财务。告别复杂的电子表格和昂贵的财务软件–Wallos简化了跟踪费用的过程&#xff0c;帮助您更好地控制财务生活。 软…