node.js - 如何在 api 服务器中包含字段并在将结果返回到 Graphql 中的客户端之前将其删除
问题描述
我有一个 Node.js GraphQL 服务器。从客户端,我正在尝试使用如下查询获取所有用户条目:
{
user {
name
entries {
title
body
}
}
}
但是,在 Node.js GraphQL 服务器中,我想返回基于条目对象publishDate
和expiryDate
在条目对象中当前有效的用户条目。
例如:
{
"user": "john",
"entries": [
{
"title": "entry1",
"body": "body1",
"publishDate": "2019-02-12",
"expiryDate": "2019-02-13"
},
{
"title": "entry2",
"body": "body2",
"publishDate": "2019-02-13",
"expiryDate": "2019-03-01"
},
{
"title": "entry3",
"body": "body3",
"publishDate": "2020-01-01",
"expiryDate": "2020-01-31"
}
]
}
应该返回这个
{
"user": "john",
"entries": [
{
"title": "entry2",
"body": "body2",
"publishDate": "2019-02-13",
"expiryDate": "2019-03-01"
}
]
}
这entries
是通过delegateToSchema
调用(https://www.apollographql.com/docs/graphql-tools/schema-delegation.html#delegateToSchema)获取的,我没有将publishDate和expiryDate作为查询参数传递的选项。本质上,我需要得到结果,然后在内存中过滤它们。
publishDate
我面临的问题是原始查询没有expiryDate
支持这一点。有没有办法将这些字段添加到 delegateToSchema 调用中,然后在将它们发送回客户端时删除它们?
解决方案
你正在寻找transformResult
实施细节如下:
- 在delegateToSchema你需要定义
transforms
数组。 - 在转换中,您需要定义
transformResult
过滤结果的函数。 - 如果您能够将参数发送到远程 GraphQL 服务器,那么您应该使用
transformRequest
推荐阅读
- android - Android:构建 Pjsip v2.9 示例应用程序时出错
- sql - 如何在 SQL 中对列进行分组?
- html - 如何在谷歌表单中包含“&”而不将其格式化为“&”
- jenkins-pipeline - 基于声明性管道中前一阶段结果的条件执行
- ios - 如何将 JSON 获取到 Swift 到 tableView 作为部分和行?
- winforms - 使用每个新请求更改 webclient 代理
- click - 如何在openlayers 5中使标记可拖动而不在我单击标记时触发拖动
- c# - 如何对从用户收到的某些消息执行函数(可能包含 SQL 查询或编程逻辑)
- python-3.x - 使用 zappa 的 AWS Lambda 部署问题
- f# - F# Parse 命令行参数,预期在此点或之前不完整的结构化构造;或者 ;;