拓扑森林
首页OPC课程政企培训专属智能体项目投融资行业资讯站内论坛关于我们
登录
跳到主内容
    论坛/求助问答

    Prisma 索引没生效导致查询很慢

    打盹的考拉·2025/04/11 09:45:10·0 浏览
    站内论坛
    教程论坛排行榜徽章
    打盹
    打盹的考拉楼主
    2025/04/11 09:45:10
    Next.js 15 中 cookies().set() 后跟 redirect() 不兼容,因为 redirect() 抛出特殊错误终止请求,不会包含之前设置的 cookie。解决:用 Server Action(cookies().set 在 Action 中正常工作)或渲染客户端组件处理。
    
    Auth.js JWT token 中字段不更新,因为 JWT 是有状态的快照。修改用户字段后需要用 useSession().update() 刷新客户端 session,同时 JWT callback 中处理 trigger === 'update' 从 DB 读取最新值更新 token。
    
    Auth.js 5 signIn redirect:false 返回 { error, ok, status, url }。判断成功:!result.error && result.ok。注意 result.url 可能含 ?error= 参数,用 redirectTo 显式指定避免误判。
    
    Shadcn UI 组件在 Server Component 报错,因为部分组件用了 Radix UI(Client Component)。确保使用 Shadcn 组件的页面或父组件加了 'use client',或者把组件包裹在 Client Component wrapper 中。
    
    Prisma 软删除查询过滤重复,用 middleware 自动过滤 deletedAt: null。Prisma 6 支持 extends 中间件,在 query 前自动加 deletedAt 过滤条件,避免每次查询都手动加。
    查看历史

    59 回复

    1. 并发
      并发摆渡人第 2 楼2025/04/12 00:09:10
      有个细节值得注意:Auth.js JWT 不更新是因为没处理 trigger === 'update',要加 useSession().update()。仅供参考,具体还是要看你的场景。
    2. 雾里
      雾里看花第 3 楼2025/04/12 00:09:10
      我的理解是:hydration mismatch 一般是服务端客户端渲染不一致,加 suppressHydrationWarning 试试。如有不对请指正。
    3. 电子
      电子古董第 4 楼2025/04/15 02:15:33
      这个观点我很认同,Prisma 连接池在 Serverless 环境设 connection_limit=1,加 ?pgbouncer=true。欢迎大家补充。
    4. 栈溢
      栈溢出幸存者第 5 楼2025/04/22 11:23:17
      反对一下,我的测试结果不是这样:Vercel 环境变量改了要重新部署才生效,NEXT_PUBLIC_ 变量尤其如此。
    5. 冬炉
      冬炉暖茶第 6 楼2025/04/23 12:23:15
      从另一个角度看:revalidatePath 路径要含 locale 前缀,如 /zh/forum/thread/xxx。实践出真知,建议动手试试。
    6. 无所
      无所谓第 7 楼2025/04/24 13:04:38
      分享一下我的做法:middleware 里 pathname 含 locale 前缀,用 includes() 不要用精确匹配。
    7. 发呆
      发呆的仓鼠第 8 楼2025/04/24 21:37:31
      我的结论恰恰相反:Prisma 连接池在 Serverless 环境设 connection_limit=1,加 ?pgbouncer=true。有疑问可以继续问。
    8. 结网
      结网的蜘蛛第 9 楼2025/04/26 13:55:05
      我做了类似的对比实验:Vercel 环境变量改了要重新部署才生效,NEXT_PUBLIC_ 变量尤其如此。后续有新发现再来更新。
    9. 听风
      听风者第 10 楼2025/04/28 17:03:25
      补充一点:useSession() 返回 null 检查 SessionProvider 是否包裹了组件。一起学习。
    10. 打工
      打工人之光第 11 楼2025/04/28 19:10:34
      有个细节值得注意:next/dynamic + ssr:false 不能在 Server Component 用,要包一层 'use client'。希望对你有帮助。
    11. 老张
      老张第 12 楼2025/04/28 22:34:15
      这个方案我试过,useSession() 返回 null 检查 SessionProvider 是否包裹了组件。效果因项目而异,建议实际测试。
    12. BU
      Bug猎人第 13 楼2025/05/07 04:22:53
      我的实践经验和你的不太一样:hydration mismatch 一般是服务端客户端渲染不一致,加 suppressHydrationWarning 试试。欢迎私信深入交流。
    13. 键盘
      键盘敲击者第 14 楼2025/05/09 21:30:33
      有个更优的方案:middleware 里 pathname 含 locale 前缀,用 includes() 不要用精确匹配。期待更多实战经验分享。
    14. 吃瓜
      吃瓜群众第 15 楼2025/05/12 00:26:30
      补充一点:next/dynamic + ssr:false 不能在 Server Component 用,要包一层 'use client'。后续有新发现再来更新。
    15. 云中
      云中漫步第 16 楼2025/05/12 06:49:34
      这个问题我研究过一阵,hydration mismatch 一般是服务端客户端渲染不一致,加 suppressHydrationWarning 试试。
    16. 拾光
      拾光者第 17 楼2025/05/12 20:03:35
      结合我最近的项目经验:hydration mismatch 一般是服务端客户端渲染不一致,加 suppressHydrationWarning 试试。期待更多实战经验分享。
    17. 掘洞
      掘洞的兔第 18 楼2025/05/16 01:45:28
      这个问题我研究过一阵,next/dynamic + ssr:false 不能在 Server Component 用,要包一层 'use client'。如果有更好的方案求分享。
    18. 逻辑
      逻辑编织者第 19 楼2025/05/16 12:53:18
      我的实践经验和你的不太一样:Auth.js JWT 不更新是因为没处理 trigger === 'update',要加 useSession().update()。感谢楼主的启发。
    19. 差不
      差不多第 20 楼2025/05/22 01:19:50
      这个问题我研究过一阵,middleware 里 pathname 含 locale 前缀,用 includes() 不要用精确匹配。希望对你有帮助。
    20. 注释
      注释写故事第 21 楼2025/05/26 14:55:24
      实操中我发现:Auth.js JWT 不更新是因为没处理 trigger === 'update',要加 useSession().update()。这只是个人经验,不一定通用。
    登录后可回复
    打盹

    打盹的考拉

    楼主个人主页

    帖子信息

    59 回复
    0 浏览
    0 赞
    0 收藏
    回复