在 Rails 中,简单的 graphQL-ruby 查询忽略排序顺序
In Rails, simple graphQL-ruby queries are ignoring sort order
以下简单查询未返回按 created_at
排序的 Posts
-
根据终端,Rails 按 id
排序,无论我在 ::Post.order(column: :direction)
中输入什么
Post Load (0.9ms) SELECT `posts`.* FROM `posts `
ORDER BY `posts `.`id` ASC LIMIT 24
我无法想象可以通过 :id
重新排序查询或阻止排序顺序。
这是解析器:
module Resolvers
class Posts < Resolvers::BaseResolver
type Types::Models::PostType.connection_type, null: false
description "List or filter all observations"
def resolve
::Post.order(created_at: :desc)
end
end
end
基础解析器
module Resolvers
class BaseResolver < GraphQL::Schema::Resolver
end
end
查询类型
# graphql/types/query_type.rb
require("graphql/batch")
require("loaders/record_loader")
require("search_object")
require("search_object/plugin/graphql")
module Types
class QueryType < Types::BaseObject
field :posts, Types::Models::PostType.connection_type, null: false, resolver: Resolvers::Posts
查询(使用中继样式游标分页)
query getPosts {
posts {
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
id
thumbImageId
textName
where
when
createdAt
updatedAt
}
}
}
}
应用架构:
class MyAppSchema < GraphQL::Schema
query(Types::QueryType)
mutation(Types::MutationType)
default_max_page_size 24
connections.add(ActiveRecord::Relation, GraphQL::Connections::Stable)
# GraphQL::Batch setup:
use GraphQL::Batch
end
背景:我计划为此模型查询使用解析器,因为最终版本将有很多使用 search_object_graphql
构建的过滤器,并且在测试排序过滤器时我注意到它忽略了排序命令。所以我将解析器剥离回 graphql 模式继承,使用 orderby 子句对查询范围进行硬编码,但它仍然没有对查询进行排序。
想通了。
这是 graphql 搜索对象插件的记录行为-ruby。
我在没有这种依赖性的情况下重做了我的查询过滤器,并且排序顺序正常。
以下简单查询未返回按 created_at
排序的 Posts
-
根据终端,Rails 按 id
排序,无论我在 ::Post.order(column: :direction)
Post Load (0.9ms) SELECT `posts`.* FROM `posts `
ORDER BY `posts `.`id` ASC LIMIT 24
我无法想象可以通过 :id
重新排序查询或阻止排序顺序。
这是解析器:
module Resolvers
class Posts < Resolvers::BaseResolver
type Types::Models::PostType.connection_type, null: false
description "List or filter all observations"
def resolve
::Post.order(created_at: :desc)
end
end
end
基础解析器
module Resolvers
class BaseResolver < GraphQL::Schema::Resolver
end
end
查询类型
# graphql/types/query_type.rb
require("graphql/batch")
require("loaders/record_loader")
require("search_object")
require("search_object/plugin/graphql")
module Types
class QueryType < Types::BaseObject
field :posts, Types::Models::PostType.connection_type, null: false, resolver: Resolvers::Posts
查询(使用中继样式游标分页)
query getPosts {
posts {
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
id
thumbImageId
textName
where
when
createdAt
updatedAt
}
}
}
}
应用架构:
class MyAppSchema < GraphQL::Schema
query(Types::QueryType)
mutation(Types::MutationType)
default_max_page_size 24
connections.add(ActiveRecord::Relation, GraphQL::Connections::Stable)
# GraphQL::Batch setup:
use GraphQL::Batch
end
背景:我计划为此模型查询使用解析器,因为最终版本将有很多使用 search_object_graphql
构建的过滤器,并且在测试排序过滤器时我注意到它忽略了排序命令。所以我将解析器剥离回 graphql 模式继承,使用 orderby 子句对查询范围进行硬编码,但它仍然没有对查询进行排序。
想通了。
这是 graphql 搜索对象插件的记录行为-ruby。
我在没有这种依赖性的情况下重做了我的查询过滤器,并且排序顺序正常。