问题描述
在现代 msgpack API 中,将标识符作为原始二进制数据返回似乎是常态;即作为 JavaScript-land 中的 Buffer
对象。
这似乎会导致 GraphQL 模式中使用的 ID
类型出现问题-
GraphQL query error TypeError: ID cannot represent value: <Buffer 84 21 24 a5 98 [truncated]>
at GraphQLScalarType.serializeID [as serialize] (./node_modules/.pnpm/[email protected]/node_modules/graphql/type/scalars.js:223:9)
我该如何处理?
我尝试在解析器回调的输出周围放置一些包装器,以便在返回 GraphQL 执行器之前调用 Buffers 上的 .toString('hex')
,但尽管这很好且可读,但它只是在途中破坏了数据的输入格式回来了。.toString('utf8')
也是如此,我在意识到这行不通之前随意提交了 a PR for。要么。
我认为我们可能真正想要的是 GraphQL 引擎将 Buffer
对象保留为有效标识符,这似乎只需要几个小的更改即可实现一个肤浅的层次(在这个用例中为我通过了执行);尽管我怀疑它们可能会产生深远的影响。
在我深入到这样一个兔子洞之前,我想最好问问其他人正在用这种集成做什么。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)