如何在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.
相关产品推荐
相关产品推荐

