我正在创建一个使用Mongoose和GraphQLInterfaceType的GraphQLInterfaceType服务器。我有一本书的GraphQLInterfaceType以及SchoolBooksType和ColoringBookType的子类型。在我的Mongoose模式中,我指定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
}
}
}任何帮助都是很好的,谢谢。
发布于 2019-01-14 09:34:30
我想您可以使用异步解析器,并连接这两个查询。
resolve: async () => {
const schoolBooks = SchoolBook.find({}).exec()
const coloringBooks = ColoringBook.find({}).exec()
const [sbooks, cbooks] = await Promise.all([schoolBooks, coloringBooks])
return [...sbooks, ...cbooks]
}https://stackoverflow.com/questions/54172698
复制相似问题