所有 GraphQL 标量都以字符串形式出现(Apollo)

All GraphQL Scalars coming up as String (Apollo)

我正在使用 Apollo 客户端进行 GraphQL 客户端集成。我添加了以下运行脚本,这是官方文档中建议的。

cd "${SRCROOT}/${TARGET_NAME}/GraphQL/Open"
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-codegen.sh generate $(find 
. -name '*.graphql') --schema schema.json 
 --output APIClient.swift

但是出现的问题是所有标量现在都以字符串形式出现。

例如:- 在登录时,如果我创建了电子邮件和密码的突变,我的架构 returns 响应为 JSON 而 APIClient 创建显示响应为字符串(而不是 JSON).

因此,收到一条错误消息

Apollo.GraphQLResultError(path: ["login", "response"], underlying: Apollo.JSONDecodingError.couldNotConvert

这是因为接收到的是字符串而不是JSON,并且无法将字符串转换为所需的JSON。

有人遇到同样的问题吗?

所以我想通了。解决方案是添加

--passthrough-custom-scalars

在 运行 脚本中。这将传递自定义标量,如 JSON。所以完整的 运行 脚本变成

cd "${SRCROOT}/${TARGET_NAME}/GraphQL/Open"
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-codegen.sh generate $(find 
. -name '*.graphql') --schema schema.json --passthrough-custom-scalars 
--output APIOpen.swift

现在,当代码与此 运行 脚本一起重新编译时,JSON 标量变得有效。

这花了我很多时间才弄清楚。希望它能帮助某人并节省他们的时间。谢谢