我有一个GraphQL对象类型Student。每个学生可能有也可能没有手机数据。Phone是另一个GraphQL类型的对象(Student中的子对象(。
我在手机上注册了GraphQL数据加载器。只要每个学生记录都有相应的电话记录,一切都很好。但是,如果有任何学生记录没有相应的电话记录,Dataloader会失败,并出现错误:
"message": "Exception while fetching data (/students[0]/phone) : The size of the promised values MUST be the same size as the key list",
我相信这是因为,dataloader试图断言列表中键的大小应该和列表中解析的值的大小相同。
有没有接受null作为值,这在我的需求中是有效的。
发现后端服务器甚至没有发送"null",它只是忽略了丢失的记录。
官方来源:https://github.com/graphql-java/java-dataloader/blob/7bf46ea182b1f8ab255c3107b1b61d4afd36ad88/src/main/java/org/dataloader/BatchLoader.java
Dataloader不支持空值:
*
* <pre>
* [
* { id: 2, name: 'San Francisco' },
* { id: 9, name: 'Chicago' },
* null,
* { id: 1, name: 'New York' }
* ]
* </pre>