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

Prisma Client Extensions计算字段返回Promise的解决方案咨询

Prisma Client Extensions异步计算字段问题解决办法

Prisma Client Extensions的compute字段是同步执行的,不支持异步逻辑——直接调用异步函数会返回[object Promise]字符串,把compute设为async则会返回pending状态的Promise,根本原因是计算字段会在模型实例初始化时同步求值,无法等待异步操作完成。

解决办法

推荐用异步实例方法替代计算字段,具体实现如下:

  1. 扩展User模型,添加异步方法
const prisma = new PrismaClient().$extends({
  model: {
    user: {
      // 定义异步方法,接收User实例作为参数
      async getNameAndAge(user: User) {
        const asyncData = await getdata();
        // 组合字段与异步数据
        return `${user.name} (${user.age}) - ${asyncData}`;
      },
    },
  },
});
  1. 使用时直接调用并await方法
// 查询用户
const targetUser = await prisma.user.findUnique({
  where: { id: 1 }
});

// 获取带异步数据的组合结果
const nameAndAge = await prisma.user.getNameAndAge(targetUser);

替代方案:查询后手动处理

如果不想扩展模型方法,也可以在查询用户后手动组合异步数据:

const targetUser = await prisma.user.findUnique({ where: { id: 1 } });
const asyncData = await getdata();
const userWithCombinedField = {
  ...targetUser,
  nameAndAge: `${targetUser.name} (${targetUser.age}) - ${asyncData}`
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:47:40