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

如何在Prisma自关联模型中查找互关用户并统计数量

查询用户的互关好友及统计数量(基于Prisma)

1. 查询互关用户(支持分页)

根据你的Prisma模型,要获取指定用户的互关好友(双向关注的用户),可通过findMany结合双向关联条件实现,同时支持分页参数:

const userId = 1; // 替换为目标用户ID

// 查询互关用户,支持分页
const mutualFollowers = await prisma.user.findMany({
  where: {
    // 条件1:该用户关注了当前目标用户
    followedBy: {
      some: {
        followerId: userId
      }
    },
    // 条件2:当前目标用户关注了该用户
    following: {
      some: {
        followingId: userId
      }
    }
  },
  // 分页配置
  skip: 0, // 跳过前N条数据,用于分页
  take: 10, // 单次获取的数量
  // 可选:指定需要返回的字段,减少数据传输
  select: {
    id: true,
    name: true
  }
});

逻辑说明

互关的核心是双向关注,需同时满足两个关联条件:

  • 查询结果中的用户必须是当前用户的关注对象(通过following.some验证当前用户是否关注该用户)
  • 当前用户必须是查询结果中用户的关注对象(通过followedBy.some验证该用户是否关注当前用户)

2. 单独统计互关用户数量

由于后续需要分页,单独查询数量可避免分页查询携带冗余统计数据,提升性能:

const mutualCount = await prisma.user.count({
  where: {
    followedBy: {
      some: {
        followerId: userId
      }
    },
    following: {
      some: {
        followingId: userId
      }
    }
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:10:28