go - 使用golang在graphql中递归
问题描述
我在 golang 中为 graphql 使用https://github.com/99designs/gqlgen,想要创建一个返回树状结构的 api,但是我想提供深度控制而不是在查询中编写嵌套选择。有没有办法做到这一点?想要实现这样的事情,
query listAll{
node: getNodes(parentId: "1235") {
ID
Name
node: Children @recursive(depth: 10) {
ID
Name
}
}
}
解决方案
GraphQL 有一个明确要求你需要什么的原则;它没有“递归”指令。换句话说,如果您想要深度为 10 的节点,则必须编写一个包含 10 个嵌套的查询。显然,您可以从程序中动态生成任何您想要的查询文本。
如果您担心这些查询的潜在复杂性以及它们可能需要多少数据,请查看文档FixedComplexityLimit
中描述的 gqlgen 扩展。
func main() {
c := Config{ Resolvers: &resolvers{} }
srv := handler.NewDefaultServer(blog.NewExecutableSchema(c))
srv.Use(extension.FixedComplexityLimit(5)) // This line is key
r.Handle("/query", srv)
}
推荐阅读
- mysql - 创建 SQL 视图
- ssms - 如何在 MySql 中从单元格中间提取单词?
- java - 提高 Alog 的效率(将数组向左旋转 n 次迭代)
- php - 将 WooCommerce 自定义帐号字段值限制为仅限数字
- java - Android:NullPointerException'double java.lang.Double.doubleValue()'
- python - 从 PDF 中识别不可选择的图像
- excel - 希望下面的代码等同于带有格式的 Vlookup。有什么建议么。Excel VBA
- unity3d - 使用放大着色器进行框边界的横截面着色器
- blazor - 我可以结合服务器和客户端模型吗?
- sql - 在 Hive 中过滤掉字符串列的最佳方法是什么?