Apollo/GraphQL在请求ID时无法获取引用的实体

Apollo/GraphQL在请求ID时无法获取引用的实体,graphql,apollo-client,Graphql,Apollo Client,堆栈: VueJS/Vuetify 阿波罗客户机 Spring引导、MongoDB和GraphQL服务器 我面临的问题是,当我使用Apollo执行GraphQL查询时,有一组引用的实体,抓取除id之外的所有字段,但只要我添加 id { entityId organisationId } 为了获得id字段,它返回所有相同实体的集合 假设有三个用户:John、Jane和Jen;特别是按照这个顺序。当我执行查询时,当id在GraphQL查询中时,它将返回John的对象三次。如果id不

堆栈:

  • VueJS/Vuetify
  • 阿波罗客户机
  • Spring引导、MongoDB和GraphQL服务器
我面临的问题是,当我使用Apollo执行GraphQL查询时,有一组引用的实体,抓取除
id
之外的所有字段,但只要我添加

id {
   entityId
   organisationId
}
为了获得
id
字段,它返回所有相同实体的集合

假设有三个用户:John、Jane和Jen;特别是按照这个顺序。当我执行查询时,当
id
在GraphQL查询中时,它将返回
John
的对象三次。如果
id
不在GraphQL查询中,它将正确返回所有实体

当我通过Postman执行查询时,它工作正常。这似乎是阿波罗号特有的问题

id
实体:

public类TradelyId实现可序列化{
字符串entityId;
字符串组织ID;
}
一些可能有助于描绘画面的片段:

@文档
@吸气剂
@塞特
@EqualsAndHashCode(仅限于xplicitlyincluded=true)
@托斯特林
@所需参数构造函数
@诺尔格构装师
公共类分配实现了可序列化{
私有静态最终长serialVersionUID=-165856150537588143L;
@身份证
@NotNull
@非空
@EqualsAndHashCode.Include
私人贸易id;
@NotNull
@非空
私人即时开始时间;
@NotNull
@非空
私有即时结束日期时间;
@NotNull
@非空
@DBRef
@浅显引用
私人工作;
@NotNull
@非空
@DBRef(lazy=true)
@浅显引用
private List users=new ArrayList();
}

从缓存中删除
typename
似乎有效

const cache=new InMemoryCache({
addTypename:false,
});
const Apollo客户端=新Apollo客户端({
uri:“”,
缓存:缓存,
});

如果我错过了任何可能有帮助的东西,请不要犹豫,尽管问。。。IDK(如果在vue中受支持)apollo@xadm谢谢你的回复,这正是我想要的。一旦我找到答案,我会把它贴在这里,并提到你。。。ID应该是标量,而不是对象(其他类型)。。。常用的方法是对其进行base64编码
type Assignment {
    id: TradelyId!
    startDateTime: String!
    endDateTime: String!
    job: Job!
    users: [User!]!
}

input AssignmentRefInput {
    id: TradelyIdQueryInput!
}

input AssignmentCreateInput {
    id: TradelyIdCreateInput!
    startDateTime: String!
    endDateTime: String!
    job: JobRefInput!
    users: [UserRefInput!]!
}

input AssignmentUpdateInput {
    id: TradelyIdQueryInput!
    startDateTime: String!
    endDateTime: String!
    job: JobRefInput!
    users: [UserRefInput!]!
}

extend type Mutation {
    createAssignment(assignment: AssignmentCreateInput!): TradelyId!
    updateAssignment(assignment: AssignmentUpdateInput!): TradelyId!
}

extend type Query {
    assignment(id: TradelyIdQueryInput!): Assignment
    assignments(id: String!): [Assignment!]!
    assignmentForJobId(id: TradelyIdQueryInput!): Assignment
    usersAvailableForAssignment(startDateTime: String!, endDateTime: String!): [User!]!
    assignmentsForUser: [Assignment!]!
}