如何在graphql-codegen/Apollo Client中解析自定义BigNumber标量?
为什么客户端没写parseValue也能把服务端返回的字符串转成ethers.BigNumber?
- 这本质是graphql-codegen的标量映射机制在自动处理,和GraphQL的
parseValue函数没关系——parseValue是服务端用来处理客户端传入参数的逻辑,和响应的反序列化完全不沾边。 - 当你在graphql-codegen的配置里把
GraphQLBigNumber标量映射为ethers.BigNumber时,codegen在生成客户端查询代码的过程中,会自动给每个对应类型的字段添加转换逻辑:读取服务端返回的字符串后,调用ethers.BigNumber.from(返回的字符串)把它转换成ethers的BigNumber实例。 - 简单说,你没写转换代码,但codegen替你生成了对应的处理逻辑,所以运行时能自动完成字符串到ethers.BigNumber的转换,不需要手动写parseValue或者其他转换函数。
内容的提问来源于stack exchange,提问作者sev
相关产品推荐
相关产品推荐

