**Prisma Kysely 扩展:无缝融合原始SQL与类型安全**

Prisma Kysely 扩展:无缝融合原始SQL与类型安全

prisma-extension-kysely Drop down to raw SQL in Prisma without sacrificing type safety! 项目地址: https://gitcode.com/gh_mirrors/pr/prisma-extension-kysely


项目介绍

Prisma Kysely Extension 是一个创新的解决方案,旨在解决在使用Prisma时遇到的类型安全和原始SQL查询之间取舍的问题。这个开源项目允许开发者在编写复杂SQL查询时享受Kysely提供的类型安全环境,同时保持与Prisma客户端的无缝对接。它消除了手工编写SQL时的错误风险,提升了开发效率,并保证了代码的质量。

项目快速启动

步骤 1: 环境准备

首先,确保已安装Node.js环境。接着,创建一个新的项目目录并初始化npm:

mkdir myProject
cd myProject
npm init -y

步骤 2: 安装依赖

接下来,安装Prisma Kysely及其必要的依赖:

npm install prisma-extension-kysely kysely prisma

步骤 3: 设置Prisma

  • 创建prisma/schema.prisma文件,配置你的数据库连接。
  • 添加Kysely作为Prisma的生成器,在schema.prisma中加入以下代码:
generator kysely {
  provider = "prisma-kysely"
}

步骤 4: 初始化Prisma并生成类型

运行Prisma CLI来设置数据库模式并生成类型文件:

npx prisma init
npx prisma generate

步骤 5: 应用扩展

在你的应用程序中引入并扩展Prisma客户端:

import { PrismaClient } from '@prisma/client';
import kyselyExtension from 'prisma-extension-kysely';

const prisma = new PrismaClient();
prisma.$extends(kyselyExtension(...));

示例:写入第一个安全的SQL查询

// 使用Kysely撰写类型安全的SQL
const result = prisma.$queryRaw`
  SELECT * FROM User WHERE id = ${userId}
`;

应用案例和最佳实践

复杂查询处理

当面临复杂的关联查询时,通过Kysely可以直接编写SQL来优化查询逻辑,同时保留Prisma的上下文感知能力:

const complexQuery = prisma.$kysely.selectFrom('User')
                               .select('*')
                               .innerJoin('Order', 'User.id', 'Order.userId')
                               .where('User.active', '=', true)
                               .execute();

事务处理

Prisma Kysely Extension完美支持事务操作,提供一致的数据处理流程:

await prisma.$transaction(async (tx) => {
  await tx.$kysely.insertInto('Transaction').values({ ... }).execute();
});

典型生态项目

Prisma Kysely Extension不仅自身强大,还能与其他Kysely生态的插件结合,如CamelCasePlugin,这使字段命名更加直观,同时保持类型安全和代码清晰:

const prisma = new PrismaClient().$extends(kyselyExtension({
  kysely: (driver) => new Kysely {...},
  plugins: [new CamelCasePlugin()],
}));

此配置需同步更新Prisma schema中的camelCase选项以保持一致。


通过以上步骤,您可以开始在项目中利用Prisma Kysely Extension带来的强大而安全的数据库交互体验。记住,利用其类型安全和自动完成特性,可以使您的数据库操作既高效又可靠。

prisma-extension-kysely Drop down to raw SQL in Prisma without sacrificing type safety! 项目地址: https://gitcode.com/gh_mirrors/pr/prisma-extension-kysely

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎杉娜Torrent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值