Graphql 获取其他相关记录(与查询的id不同)
作为GraphQL的新手,我希望在以下方面得到一些帮助: 我有一个查询,它检索它的作者和那个作者的书。我希望作者的书是作者的其他书,意思是——除了被询问的那本。它涉及到什么 阿波罗角度查询:Graphql 获取其他相关记录(与查询的id不同),graphql,apollo,Graphql,Apollo,作为GraphQL的新手,我希望在以下方面得到一些帮助: 我有一个查询,它检索它的作者和那个作者的书。我希望作者的书是作者的其他书,意思是——除了被询问的那本。它涉及到什么 阿波罗角度查询: const getBookQuery = gql` query($id: ID){ book(id: $id){ id name year author {
const getBookQuery = gql`
query($id: ID){
book(id: $id){
id
name
year
author {
id
firstName
lastName
books { # <-- give me all _except_ the one with $id
name
year
id
}
}
}
}
`;
显然,我所寻找的解决方案不应该中断对
书籍的其他查询您应该能够通过在Author类型def中添加一个参数,然后在书籍的解析器(应该是您的Author类型上的嵌套解析器)中适当地使用该参数来实现排除。将需要为apollo angular修改语法
type Author {
id:
firstName: String
lastName: String
books(exclude: ID): [Book]
}
const resolverMap = {
Query: {
book(arent, args, ctx, info) {
...
}
},
Author: {
books(obj, args, ctx, info) {
// Use args.exclude passed to filter results
},
},
};
const getBookQuery = gql`
query($id: ID){
book(id: $id){
id
name
year
author {
id
firstName
lastName
books(exclude: $id) {
name
year
id
}
}
}
}
`;
我不能直接使用你的答案,因为我有一些猫鼬代码而不是真正的typedef,但是你的答案把我推向了正确的方向。基本上需要做的是:(1)在AuthorType
books
字段上声明args:{exclude:{type:GraphQLID}}
,(2)在if
中的解析器中使用它,检查arg是否存在:Book.find({$and:[{authorId:id},{$ne:exclude}})代码>(3)在客户端查询中,按照建议添加参数:books(排除:$id)
type Author {
id:
firstName: String
lastName: String
books(exclude: ID): [Book]
}
const resolverMap = {
Query: {
book(arent, args, ctx, info) {
...
}
},
Author: {
books(obj, args, ctx, info) {
// Use args.exclude passed to filter results
},
},
};
const getBookQuery = gql`
query($id: ID){
book(id: $id){
id
name
year
author {
id
firstName
lastName
books(exclude: $id) {
name
year
id
}
}
}
}
`;