HelloWorld 发表于 2025-3-23 15:28:26

prisma + nextjs + neon

本帖最后由 HelloWorld 于 2025-3-24 12:10 编辑

之前没用过 prisma,这次做新项目用一下,发现挺好用

在 prisma/schema.prisma 文件配置好数据库结构,用 schema 的 push 命令即可更新到数据库里,push 后还会自动生成 client 到 node_modules 文件夹

数据库结构可以用 @relation 装饰器去关联其它表,省去了连表查询

prisma 使用方法很简单,直接告诉 ChatGPT o3-mini-high prisma 版本号,他会一步步教你集成到 nextjs

此外就是 neon 云数据库,vercel 主推,有点坑:https://shuzijumin.com/thread-6292-1-1.html
不过作为小体量应用,也算方便,管理后台 console.neon.tech 用起来也算顺手

prisma 因为每次编译前都需要生成 client,所以 vercel 自动部署脚本要改成 npx prisma generate && next build,否则自动部署会失败

项目中还用到 react-query 作为数据缓存,用 zod 检查数据类型,用 react-hook-form 构建表单,后端密码加密用的是 argon2,鉴权用 cookie 里的 httponly jwt token,并设置仅 https 可用
前端就不要用 argon2 了,因为同一个密码,每次生成的字符串都不一样,前端要么直接传明文,要么用 sha256 之类的固定输出的哈希
jwt token 放 cookie httponly 两个,好处,一个是不用担心前端被第三方 js 读取,另一个是构建 api 请求,cookie 自动传更方便,而且 cookie 本身也有过期机制

貌似用了 react-query 缓存数据后,如果前端没有复杂的跨界面数据交互的话,都不需要用 mobx 等状态管理了,直接去 react-query 的 hook 拿数据就好

项目框架用 v0.dev 搭建,它默认用了 radix-ui 组件库以及 next@15 和 react@19

在开发注册登录页面时,本来打算用谷歌的 reCAPTCHA 防刷,免费版一个月 1 万次,开发完突然意识到,大陆无法访问谷歌域名,reCAPTCHA 大陆用不了,于是改用其它方案
下次验证码打算试试 Cloudflare Turnstile,这个完全免费
或者用 svg-captcha 这种完全不依赖第三方的 npm 包,虽然这个项目好几年没维护,不过功能挺正常
页: [1]
查看完整版本: prisma + nextjs + neon