[英]GraphQL Resolver for Interface on same Mongoose collection
我正在创建一个使用Mongoose和GraphQLInterfaceType的GraphQL服务器。 我有书籍的GraphQLInterfaceType以及SchoolBooksType和ColoringBookType的子类型。 在我的猫鼬模式中,我指定了SchoolBooks和ColoringBooks都应存储在同一本书集中
const coloringSchema = new Schema({
title: String,//Interface
pages: String
});
module.exports = mongoose.model("ColoringBook", coloringSchema , "books");
const schoolSchema = new Schema({
title: String, //Interface
subject: String
});
module.exports = mongoose.model("SchoolBook", schoolSchema , "books");
这是我的一种
const SchoolBookType = new GraphQLObjectType({
name: "SchoolBook",
interfaces: [BooksInterface],
isTypeOf: obj => obj instanceof SchoolBook,
fields: () => ({
title: { type: GraphQLString },
subject: { type: GraphQLString }
})
});
这是我的查询: 但是,如果需要将两个集合合并到同一数组中,我不知道要返回什么?
books: {
type: new GraphQLList(BooksInterface),
resolve() {
return SchoolBook.find({}) //<---- What to return?
}
}
这是我的查询:
{
books{
title
... on ColoringBook{
pages
}
... on SchoolBook{
subject
}
}
}
任何帮助都会很棒,谢谢。
我猜您可以使用异步解析器,并同时连接两个查询。
resolve: async () => {
const schoolBooks = SchoolBook.find({}).exec()
const coloringBooks = ColoringBook.find({}).exec()
const [sbooks, cbooks] = await Promise.all([schoolBooks, coloringBooks])
return [...sbooks, ...cbooks]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.