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

Prisma+MongoDB:多对多嵌套创建仅填充关系单侧问题

问题:Prisma MongoDB多对多关联中,Post关联Photo后Photo的postIds未同步更新,但计数正确

业务场景与Schema定义

业务需求:User可创建多张Photo并关联至单个Post,其他用户可转发他人照片,因此Photo与Post需建立多对多关系。对应的Prisma Schema如下:

model User {
  id              String     @id @default(auto()) @map("_id") @db.ObjectId
  photos          Photo[]
  posts           Post[]
  ...
}

model Photo {
    id          String   @id @default(auto()) @map("_id") @db.ObjectId
    user        User     @relation(fields: [userId], references: [id])
    userId      String   @db.ObjectId
    posts       Post[]   @relation(fields: [postIds], references: [id])
    postIds     String[] @db.ObjectId
    ...
}

model Post {
    id           String    @id @default(auto()) @map("_id") @db.ObjectId
    poster       User      @relation(fields: [posterId], references: [id])
    posterId     String    @db.ObjectId
    photos       Photo[]   @relation(fields: [photoIds], references: [id])
    photoIds     String[]  @db.ObjectId
    ...
}

问题操作

目前能正常创建Photo和Post,但执行以下代码创建关联已有照片的新Post时,Post的photoIds能正确填充,但Photo的postIds仍为空:

return await prisma.user.update({
    where: {id},
    data: {
        posts: {
            create: {
                photoIds,
            },
        }
    }
})

异常现象

虽然Photo的postIds字段为空,但查询Photo关联的Post计数时结果是正确的:

await prisma.user.findUnique({where: { id }}).photos({
    where: { id: photoId },
    select: {
        ...
        _count: {
            select: {
                posts: true,
            }
        },
    }
})

已反复查阅Prisma MongoDB多对多相关文档,仍未找到原因,求解决方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:29:10