单一查询不会返回嵌套数组

Posted

技术标签:

【中文标题】单一查询不会返回嵌套数组【英文标题】:Singular query won’t return nested arrays 【发布时间】:2020-06-15 19:05:40 【问题描述】:

我有一个尝试获取单个文档的查询,这是该查询的解析器。

const singleDoc = async (_parent, args, context, info) => 
    try 
        return await context.prisma.doc( id: args.docId ,info )
     catch (error) 
        console.log(error)
    


如果我在 GraphQL 中调用查询,它会返回:

  "data": 
    "singleDoc": 
      "name": "Sample doc",
      "teams": null,
      "description": "This holds doc description"
    
  

我查询了 teams 字段,但没有返回。

我觉得查询解析器有问题?我错过了什么?

【问题讨论】:

您还有其他使用context.prisma.doc 的查询吗?当您登录context.prisma 时,您看到您的数据库实例了吗? @technicallynick 是的,我可以看到数据库实例 【参考方案1】:

我能够通过使用 graphQL fragments

实现

片段

const docFragment = `
    fragment DocWithDetails on Doc 
        name
        teams
            id
            role
          
    `

然后我将 graphQL 片段传递给解析器。这是我能够检索嵌套关系

const singleDoc = async (_parent, args, context, info) => 
    try 
        return await context.prisma.doc( id: args.docId ).$fragment(docFragment)
     catch (error) 
        console.log(error)
    

【讨论】:

以上是关于单一查询不会返回嵌套数组的主要内容,如果未能解决你的问题,请参考以下文章

Apollo GraphQL 客户端不会在查询中返回缓存的嵌套类型

Mongoose 查询返回带有空数组的嵌套文档

Linq 查询以返回具有特定属性值的嵌套数组

如何从通过 Moya.Response 查询返回的对象解析嵌套的 JSON 数组

SQL语句:子查询

具有对象元素的嵌套数组模式返回具有空对象的数组