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

Prisma使用updateMany操作关联notifications字段提示未知参数问题

报错原因
  • Prisma 的 updateMany 接口目前仅支持更新当前模型的标量字段,不支持任何关联模型的嵌套写操作(包括嵌套创建、更新、删除关联记录)。你看到的报错信息里列出的UserUpdateManyMutationInput仅包含User模型的4个原生标量字段,也验证了这一点,关联字段notifications根本不在updateMany的允许入参范围内。
  • 而单条记录的update接口是支持嵌套关联操作的,所以你后续循环调用单条update的写法可以正常运行,但这种写法会产生N次数据库请求(N为粉丝数量),性能损耗极大。
最优批量实现方案

直接使用 Prisma 提供的createMany接口批量创建通知记录,仅需2次数据库请求即可完成操作,性能远高于循环单条更新的方案,代码实现如下:

createNotification: async (_, args, {req, res}) => {
  // 1. 仅查询所有关注当前用户的粉丝ID,减少数据传输开销
  const followers = await prisma.user.findMany({
    where: {
      following: {
        some: { id: req.userId }
      }
    },
    select: { id: true }
  })

  // 2. 批量为所有粉丝插入通知记录
  await prisma.notification.createMany({
    data: followers.map(follower => ({
      userId: follower.id,
      message: args.message,
      watched: false
    }))
  })
}

如果你需要获取创建完成的通知记录,可使用 Prisma 4.6.0 版本新增的createManyAndReturn接口替换上述的createMany即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:57:05