Prisma-Tools实战教程:构建完整用户管理系统(附代码) Prisma-Tools实战教程构建完整用户管理系统附代码【免费下载链接】prisma-toolsPrisma tools to help you generate CRUD system for GraphQL servers项目地址: https://gitcode.com/gh_mirrors/pr/prisma-toolsPrisma-Tools是一套强大的工具集能够帮助开发者快速生成GraphQL服务器的CRUD系统尤其在构建用户管理系统方面表现出色。本教程将带你从零开始利用Prisma-Tools构建一个功能完善的用户管理系统包括用户注册、登录、角色管理和权限控制等核心功能。Prisma-Tools简介Prisma-Tools是GitHub加速计划中的一个重要项目它提供了一系列工具来简化基于Prisma和GraphQL的应用开发流程。通过自动生成代码和提供现成的组件Prisma-Tools可以显著减少开发时间让开发者专注于业务逻辑而非重复工作。环境准备安装Prisma-Tools首先确保你的开发环境中已经安装了Node.js和npm。然后通过以下命令克隆Prisma-Tools仓库git clone https://gitcode.com/gh_mirrors/pr/prisma-tools cd prisma-tools npm install项目结构概览Prisma-Tools的项目结构清晰主要包含以下几个部分packages/: 核心工具包包括admin、generator、nexus和pluginsexamples/: 示例项目包含完整的使用案例docs/: 项目文档tests/: 测试文件构建用户管理系统定义数据模型用户管理系统的核心是数据模型。在Prisma中我们使用schema.prisma文件定义数据模型。以下是一个基本的用户模型定义model User { id Int id default(autoincrement()) email String unique username String unique firstName String? lastName String? password String role Role default(USER) isActive Boolean default(true) balance Float default(0) metadata String? // JSON stored as string in SQLite createdAt DateTime default(now()) updatedAt DateTime updatedAt // 1:1 relation profile Profile? // 1:N relations posts Post[] comments Comment[] orders Order[] reviews Review[] sentMessages Message[] relation(SentMessages) receivedMessages Message[] relation(ReceivedMessages) // N:M through explicit join table followedBy UserFollow[] relation(Following) following UserFollow[] relation(FollowedBy) // N:M through implicit join table likedPosts Post[] relation(UserLikedPosts) groups Group[] relation(GroupMembers) }这个模型定义了用户的基本信息包括ID、邮箱、用户名、密码等字段以及与其他模型的关系。你可以在examples/admin-test/prisma/schema.prisma文件中找到完整的模型定义。配置Prisma生成器Prisma-Tools提供了一个强大的生成器可以根据数据模型自动生成GraphQL类型和解析器。在schema.prisma文件中添加以下配置generator paljs { provider paljs-generator output ../src/generated/paljs }这个配置告诉Prisma使用paljs-generator生成代码并将输出文件放在指定目录。生成GraphQL代码配置完成后运行以下命令生成GraphQL代码npx prisma generatePrisma-Tools会根据你的数据模型自动生成GraphQL类型、查询和突变。生成的代码位于src/generated/paljs目录下。创建用户管理界面Prisma-Tools的admin包提供了现成的用户管理界面组件。你可以在packages/admin/src目录下找到这些组件。以下是一个简单的用户列表组件示例import { PrismaTable } from ./PrismaTable; import { useSchema } from ./useSchema; export const UserList () { const { models } useSchema(); const userModel models.find(model model.name User); return ( div classNamep-4 h1 classNametext-2xl font-bold mb-4用户管理/h1 PrismaTable model{userModel} / /div ); };这个组件使用PrismaTable来展示用户列表支持排序、过滤和分页等功能。你可以在examples/admin-test/src/app/admin/[model]/page.tsx中找到完整的实现。实现用户认证用户认证是用户管理系统的重要组成部分。Prisma-Tools的nexus包提供了身份验证相关的工具。以下是一个简单的登录解析器示例import { mutationType } from nexus; export const Mutation mutationType({ definition(t) { t.field(login, { type: AuthPayload, args: { email: stringArg({ required: true }), password: stringArg({ required: true }), }, async resolve(_, { email, password }, ctx) { // 查找用户 const user await ctx.prisma.user.findUnique({ where: { email } }); if (!user) { throw new Error(用户不存在); } // 验证密码 const valid await bcrypt.compare(password, user.password); if (!valid) { throw new Error(密码错误); } // 生成JWT const token jwt.sign({ userId: user.id }, process.env.JWT_SECRET); return { token, user, }; }, }); }, });这个解析器实现了基本的登录功能包括用户查找、密码验证和JWT生成。你可以在packages/nexus/src目录下找到更多身份验证相关的工具。测试用户管理系统种子数据为了测试用户管理系统我们可以使用种子脚本来创建测试用户。以下是一个简单的种子脚本示例import { PrismaClient } from prisma/client; const prisma new PrismaClient(); async function main() { // 创建测试用户 const users await prisma.user.createMany({ data: [ { email: adminexample.com, username: admin, password: await bcrypt.hash(admin123, 10), role: ADMIN, firstName: Admin, lastName: User, }, { email: userexample.com, username: user, password: await bcrypt.hash(user123, 10), role: USER, firstName: Regular, lastName: User, }, ], }); console.log(Created ${users.count} users); } main() .catch((e) console.error(e)) .finally(async () { await prisma.$disconnect(); });你可以在examples/admin-test/prisma/seed.ts文件中找到完整的种子脚本。运行以下命令执行种子脚本npx prisma db seed运行测试Prisma-Tools提供了完整的测试套件你可以使用以下命令运行测试npm test测试文件位于examples/admin-test/e2e目录下包括数据完整性测试、GraphQL API测试和首页测试等。总结通过本教程你已经了解了如何使用Prisma-Tools构建一个完整的用户管理系统。Prisma-Tools的强大之处在于它能够根据数据模型自动生成大量代码大大减少了开发工作量。无论是简单的CRUD操作还是复杂的权限管理Prisma-Tools都能提供有力的支持。如果你想深入了解Prisma-Tools的更多功能可以查阅项目文档特别是docs/目录下的架构计划和包审查文档。祝你在使用Prisma-Tools开发项目时取得成功【免费下载链接】prisma-toolsPrisma tools to help you generate CRUD system for GraphQL servers项目地址: https://gitcode.com/gh_mirrors/pr/prisma-tools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

今日更新