首页 > 其他分享 >express开发api指南--集成ORM(prisma)

express开发api指南--集成ORM(prisma)

时间:2024-07-31 15:54:00浏览次数:7  
标签:prisma req insensitive -- express Prisma mode query

9.1 安装依赖

#全局安装prisma
cnpm install prisma -g
#添加开发依赖
cnpm install prisma --save-dev
#创建 Prisma 架构文件模板,设置 Prisma ORM 项目
npx prisma init
#安装并生成 Prisma Client
cnpm install @prisma/client -g
cnpm install @prisma/client --save

9.2 连接数据库
若要连接数据库,您需要将 Prisma 模式中 datasource 块的 url 字段设置为数据库的 连接 URL
prisma/schema.prisma
datasource db { provider = "postgresql" url = env("DATABASE_URL")}
在这种情况下,url 是 通过环境变量设置的,该变量在 .env 中定义
.env
DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"
现在需要调整连接 URL 以指向您自己的数据库。
数据库的 连接 URL 格式 取决于您使用的数据库。对于 PostgreSQL,其格式如下(所有大写部分是您特定连接详细信息的占位符)
postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA
9.3 同步数据库表model
npx prisma db pull
内省完成后,你的 Prisma 模式文件已更新
9.4 修改之前的CRUD
以查询为例

//mode: "insensitive" 代表不区分大小写
router.post(Controller + "/search", await (req, res, next) => {
try {
    const data = await prisma.t_msd_msl_2.findMany({
      where: {
        AND: [
          {
            msl_id: {
              contains: req.query.msl_id,
              mode: "insensitive",
            },
          },
          {
            msl: {
              contains: req.query.msl,
              mode: "insensitive",
            },
          },
          {
            floor_life: {
              contains: req.query.floor_life,
              mode: "insensitive",
            },
          },
          {
            unit: {
              contains: req.query.unit,
              mode: "insensitive",
            },
          },
          {
            floor_environment: {
              contains: req.query.floor_environment,
              mode: "insensitive",
            },
          },
          {
            enabled: {
              contains: req.query.enabled,
              mode: "insensitive",
            },
          },
        ],
      }
    });
    res.send(resultInfo(0, data));
  } catch (error) {
    res.send(resultInfo(1, "", error));
  }
});

findMany、findUnique、create等方法参照:
CRUD (参考) | Prisma 文档 - Prisma 中文

标签:prisma,req,insensitive,--,express,Prisma,mode,query
From: https://www.cnblogs.com/tdyp/p/18334807

相关文章

  • 【STM32 HAL库】HC-05 蓝牙通信
    【STM32HAL库】蓝牙通信理论模块功能接线应用CubeMX配置轮询模式发送DMA模式发送Keil5代码理论模块功能将复杂的蓝牙协议简化为串口透传即以HC-05作为串口与主机之间通信的桥梁,实现串口与主机的通信本质上就是无线的串口通信接线HC-05STM32TXRXRXTXGNDGNDV......
  • 探索智慧园区的创新实践与未来展望
    智慧园区是指运用物联网、大数据、云计算、人工智能等新一代信息技术,对园区进行全方位、全时段的智能化改造,实现管理高效、服务便捷、环境友好、创新驱动的现代化园区形态。其核心理念在于通过技术赋能,优化资源配置,提升园区运行效率,促进产业生态融合,打造可持续发展环境。......
  • 【STM32 HAL库】TIM定时器与CubeMX配置
    【STM32HAL库】TIM定时器与CubeMX配置前言TIM定时器基本理论定时器的本质就是计数器!定时器的基本作用定时器分类定时器的外部时钟与从模式TIM基本定时器理论应用CubeMX配置Keil5代码输入捕获理论应用CubeMX配置Keil5代码PWM理论应用CubeMX配置Keil5代码前言......
  • AP510X 单路低压差线性恒流芯片 LED手电筒台灯车灯照明方案
    产品描述AP510X是一系列电路简洁的单路线性LED恒流芯片,适用于3-60V电压范围的LED恒流调光领域。AP510X采用我司算法,可以实现高精度的恒流效果,输出电流恒流精度≤±3%,电源供电工作范围为3-40V,可以轻松满足锂电池以及市场上面中低压的应用需求。PWM调光支持高辉应用,可以支持20K以......
  • 结合拦截器描述mybatis启动流程
    简介mybatis的启动入口一般有两个,在结合spring框架后由spring整合包下的SqlSessionFactoryBean启动如果没有整合spring,则有XMLConfigBuilder启动这两个启动入口都会初始化Configuration对象,该对象是mybatis配置文件的对象形式,我们实现的mybatis拦截器在此时被装载到configurati......
  • html 第一天
    day1_html1.html介绍html写页面用的页面中出现什么超文本标记语言除了文本还有连接图片声音视频等内容通过标签语法编写各种元素2.html基本格式<!DOCTYPEhtml><html> <head> <metacharset="utf-8"/> <title>testpage</title> </head> <body> 我做......
  • 洛谷题单指南-前缀和差分与离散化-P1083 [NOIP2012 提高组] 借教室
    原题链接:https://www.luogu.com.cn/problem/P1083题意解读:已知第i天有r[i]个教室可以供租借,有m个租借教室的订单,第i订单需要在第s[i]~t[i]天区间内租借d[i]个教室,计算是否全部订单都能满足,如果不满足要输出从第几个订单开始不满足。解题思路:1、朴素做法枚举1~m个订单,通过差分......
  • 记一次 JUnit5 问题排查(不识别单测、mock 对象空指针等问题)
    背景最近开始使用JUnit5写单元测试,本地运行成功之后提交代码,触发流水线进进行覆盖率计算。结果出来之后傻眼了,几百个单侧只能识别到2个。先简单说一下具体的环境。本地使用IDEA自带的maven,版本为3.9.6,JUnit版本5.7.0。流水线使用jenkins触发maven命令,用的maven......
  • IIS6.1+ASP+ACCESS网站迁移
    1.首先在源web服务器IIS管理器中将要迁移的网站停止,然后将要迁移的网站整个目录拷贝到目标服务器相同目录下;2.通过cmd命令进到源web服务器inetsrv目录:cd/dc:\windows\system32\inetsrv3.使用以下命令将源web服务器中IIS应用程序池配置信息导出:appcmdlistapppool/config/......
  • C - Removing Coins
    原题链接题解对于硬币数变为零的点,由于既不能穿越,也不能选取,所以等于删掉了所以操作就变成了,选取一个点,删除以其为根的树的所有叶子节点先将树退化成链,考虑链上操作的情况,如果选取链上端点,总节点数只减一,否则减二因此对于树上任意一条链,每次选取会导致要么减一要么减二,因此只......