【发布时间】:2020-06-03 16:20:31
【问题描述】:
考虑以下查询:
const fetchItemsQuery = `query(
$paginationPageSize: Int!
$paginationPageNumber: Int!
$searchByNameRequest: String
$categoryID: String
) {
getItems(
paginationPageSize: $paginationPageSize
paginationPageNumber: $paginationPageNumber
searchByNameRequest: $searchByNameRequest
categoryID: $categoryID
) {
// ...
}
};
如果使用变量从客户端提交:
{
paginationPageSize: 20,
paginationPageNumber: 1
}
在 AWS App Sync 日志中,它显示:
{
paginationPageSize: 20,
paginationPageNumber: 1,
searchByNameRequest: null,
categoryID: null
}
我检查了来自浏览器的请求负载 - 没有空值,只是
{
paginationPageSize: 20,
paginationPageNumber: 1
}
所以原因不在前端。
我发现null 替换发生在请求解析模板中:
{
"version" : "2017-02-28",
"operation": "Invoke",
"payload": {
"field": "listProduct",
"arguments": $util.toJson($context.args) // <- here
}
}
$util.toJson 使用 Apache Velocity。
我可以避免$util.toJson($context.args) 将替换我的请求变量中的空值吗?
重要提示:解决方案不应接触显式提交的空值。
【问题讨论】:
-
您最终解决了这个问题吗?与 undefined 或 non-present 相比,认为 null 在 GraphQL 中没有意义,appsync 似乎很糟糕。下面的默认选项似乎是一个 hacky 解决方法
标签: amazon-web-services graphql velocity aws-appsync