微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GraphQL:如何处理在其自己的类型定义中引用类型?

如何解决GraphQL:如何处理在其自己的类型定义中引用类型?

假设我有以下内容

type User {
  id: Int!
  name: String
  dob: String
  friends: [User]
}

Query {
  user(id: Int!): User
}

在我看来,我刚刚创造了无限递归的潜力:

query GetUser($userId: Int!) {
  user(id: $userId) {
    friends {
      name
      friends {
        name
        friends {
          name
          ...etc
        }
      }
    }

  }
}

我如何防止在我的 user 解析器中出现这种情况?

解决方法

这可能是一个潜在的问题,但您可以使用自定义验证来阻止此类请求,例如 https://github.com/stems/graphql-depth-limit

import depthLimit from 'graphql-depth-limit'
import express from 'express'
import graphqlHTTP from 'express-graphql'
import schema from './schema'

const app = express()

app.use('/graphql',graphqlHTTP((req,res) => ({
  schema,validationRules: [ depthLimit(10) ]
})))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。