2017-09-03 105 views
0

我使用阿波罗客户端GraphQL客户端集成。我添加了以下运行脚本,这是在官方文档中建议的。所有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 

但是即将到来的问题是所有的标量现在都以String的形式出现了。

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

由此有收到错误它说

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

这是因为串被接收,而不是JSON和字符串不能被转换成所需的JSON。

是任何人都面临着同样的问题?

回答

0

所以我想通了。解决办法是在运行脚本中添加

--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标量将变为有效。

这花了我很多时间来弄清楚。希望它能帮助别人,节省时间。谢谢

相关问题