Prisma ORM 查询关系用户

Posted

技术标签:

【中文标题】Prisma ORM 查询关系用户【英文标题】:Prisma ORM query relation User 【发布时间】:2020-04-14 06:35:22 【问题描述】:

我正在尝试在 Prisma ORM 中查询 1:1 关系 但是查询时总是返回 null

这是我的数据模型:

enum Role 
  ADMIN
  MEMBER
  CONSTRIBUTOR


type User 
  id: ID! @id
  name: String! @unique
  email: String! @unique
  password: String!
  posts: [Post!]!
  role: Role @default(value: MEMBER)


type Post 
  id: ID! @id
  title: String
  excerpt: String
  content: Json
  author: User! @relation(link: INLINE)

我正在尝试查询包含用户的帖子:

但是当我这样做时在我的解析器中:

  getPost: async (parent, args, ctx, info) => 
            if (args.id) 
                console.log('GET POST by ID');
                const id = args.id;
                return await ctx.prisma.post( id ).author();
            
        ,

它总是返回 Null。有人知道如何解决吗?

【问题讨论】:

您返回的是作者对象,而不是帖子对象。 @DanielRearden 但我想与该帖子所附的作者一起发布:) 我该怎么做 你读过the docs吗? @DanielRearden 谢谢你会检查片段 api :) @DanielRearden 我认为查询关系是这样的:prisma.io/tutorials/a-guide-to-common-resolver-patterns-ct08/… 【参考方案1】:

通过对作者使用单独查询来修复它:

   const author = await ctx.prisma.post( id: id ).author();
   const post = await ctx.prisma.post( id );

    return 
       ...post,
       author
    ;

【讨论】:

以上是关于Prisma ORM 查询关系用户的主要内容,如果未能解决你的问题,请参考以下文章

Prisma:如何在查询返回中添加一列?

Prisma 多对多关系查询

使用 Prisma 通过关联表查询多对多关系

Apollo 和 Prisma Graphql 显式模型关系不可查询

使用 Prisma 2 从查询中排除用户密码

使用 GraphQL、Nexus 和 Prisma 优化 SQL 查询