You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS项目中TRPC公共流程多输入参数配置求助

TRPC Public Procedure 添加多输入参数与获取用户上下文的解决方法

方案1:合并输入Schema,同时传递购物车和用户信息

直接把购物车数组和用户信息包装成一个对象,用Zod合并两个Schema,就能在procedure里同时拿到两类参数:

首先修改输入Schema:

// 合并购物车与用户信息的Schema
export const checkoutInputSchema = z.object({
  cart: cartSchema,
  user: UserSchema
});

然后更新你的procedure:

createCheckoutSession: publicProcedure
  .input(checkoutInputSchema)
  .query(async (opts) => {
    const { cart, user } = opts.input;
    // 直接使用cart和user数据
    console.log('购物车数据:', cart);
    console.log('用户信息:', user);
  }),

方案2:通过TRPC Context注入用户信息(更推荐)

TRPC后端不能用React的useContext,但TRPC本身有专属的Context机制。你可以在TRPC的上下文配置中注入用户信息,然后在procedure里通过opts.context获取:

第一步:配置TRPC Context

在你的TRPC服务端配置文件中(比如trpc/server.ts),定义上下文并注入用户信息:

import { initTRPC } from '@trpc/server';
import type { CreateNextContextOptions } from '@trpc/server/adapters/next';
import { UserSchema } from './your-schema-path';

// 定义Context类型
type Context = {
  user: z.infer<typeof UserSchema> | null;
};

// 初始化TRPC并绑定Context
const t = initTRPC.context<Context>().create();

// 导出public procedure
export const publicProcedure = t.procedure;

// 创建上下文生成函数
export const createContext = async (opts: CreateNextContextOptions) => {
  // 这里从请求中获取用户信息,比如从cookie、session或NextAuth中读取
  // 示例:假设你从自定义cookie解析用户信息
  const user = parseUserFromCookie(opts.req); // 替换成你的实际获取逻辑
  // 用UserSchema验证数据格式
  const validatedUser = user ? UserSchema.parse(user) : null;

  return {
    user: validatedUser,
  };
};

第二步:在procedure中使用Context里的用户信息

更新你的createCheckoutSession方法:

createCheckoutSession: publicProcedure
  .input(cartSchema)
  .query(async (opts) => {
    const cart = opts.input;
    const user = opts.context.user;

    if (!user) {
      throw new Error('用户信息未找到,请先登录');
    }

    // 处理业务逻辑
    console.log('购物车:', cart);
    console.log('用户信息:', user);
  }),

方案对比

  • 方案1简单直接,适合用户信息需要前端主动传递的场景,但存在前端篡改数据的风险,需要后端额外验证。
  • 方案2更安全,用户信息由后端统一注入和验证,避免前端篡改,是生产环境的推荐方案。

内容的提问来源于stack exchange,提问作者CodeTester9001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:30:54