我有一个有效的 graphql 查询:
query orderOnTheFly {
products(order:{ id: ASC, status: ASC })
{
nodes { id status }
}
}
现在我必须(在前端)实现用户选择要使用的字段(
id
或status
)和顺序(ASC
或DESC
)(一次仅按一个字段排序)。我想写的内容(例如 $fieldName="id", $order="ASC" - 让排序id ASC
):
query orderOnTheFly( $fieldName:String, $order:String) {
products(order:{ $fieldName: $order })
{
nodes { id status }
}
}
或至少($ idOrder = null,$ statusOrder =“ASC” - 当我不选择
id
字段进行排序时,只能通过status ASC
)
query orderOnTheFly( $idOrder:String, $statusOrder:String) {
products(order:{ id: $idOrder, status: $statusOrder })
{
nodes { id status }
}
}
它们都不起作用。这种情况如何解决?
前端使用react-relay编译器,所以我不想通过字符串操作生成graphql查询。否则 - 我的 graphql 服务器是带有 hotChocolate 包的 .net core 服务器(数据库是 Marten 事件存储)。
我认为处理此问题的最简单方法是将“NONE”定义为可能的排序方向之一。
默认查询为:
products(order:{ id: "NONE", status: "NONE" })
但是根据用户的选择,其中一个或两个将设置为“ASC”或“DESC”
一个挑战是,此结构不允许您在对两个字段进行排序时指定先对哪个字段进行排序。