"Return type for \"CodetestUnion\" cannot be resolved.
If you did not pass a custom implementation (the \"resolveType\" function),
you must return an instance of a class instead of a plain JavaScript object."
之前本来想好好写一篇关于RestfulAPI的介绍文章的,结果写到一半新项目要用GraphQL,又得重新学,回头看了一眼草稿箱,发现已经有好几篇写了一半的文章没有后续了,感觉怪可惜的。但是最近睡眠不太好又提不起什么兴致,只能后续看有没有机会补充一下了。
废话少说,聊聊今天的问题。
这个问题是我在写GraphQL联合查询的时候遇到的,参考的是NestJS中文文档,由于我们数据库使用的是neo4j,查询的节点可能不止一个,当多个节点同时返回的时候我不希望每个节点都需要去重新通过sql查询,而是将所有节点作为一个数组返回给客户端,但是单靠GraphQL的标量语法是很难做到这一点的,便需要使用到联合查询。
当时的写法是这样的:
其实问题解决起来很快,错误提示里写道:你没有通过自定义执行("resolveType"方法)。上面那篇中文文档稍微往下翻一点就可以找到resolveType方法的写法了,于是这一段被改成了这样:
简单来说就是,你的程序里同时返回了多种对象(Player和Coach),但你需要告诉你的框架在什么时候使用Player,什么时候使用Coach,我在这里定义的规则是当节点的labels值为'PLAYER'的时候返回Player对象,修改之后就可以看到两种对象被同时返回了。
顺便在这里挖个坑,等我把这玩意搞清楚之后再写一篇 GraphQL + NestJS + Neo4j 的小白教学,最近关注的同学变多了,让我有点小膨胀,大家敬请期待吧...