首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于同一猫鼬采集接口的GraphQL解析器

用于同一猫鼬采集接口的GraphQL解析器
EN

Stack Overflow用户
提问于 2019-01-13 20:02:37
回答 1查看 418关注 0票数 0

我正在创建一个使用Mongoose和GraphQLInterfaceType的GraphQLInterfaceType服务器。我有一本书的GraphQLInterfaceType以及SchoolBooksType和ColoringBookType的子类型。在我的Mongoose模式中,我指定SchoolBooks和ColoringBooks都存储在相同的图书集合中

代码语言:javascript
复制
const coloringSchema = new Schema({
  title: String,//Interface
  pages: String
});

module.exports = mongoose.model("ColoringBook", coloringSchema , "books");
代码语言:javascript
复制
const schoolSchema = new Schema({
  title: String, //Interface
  subject: String
});

module.exports = mongoose.model("SchoolBook", schoolSchema , "books");

这是我喜欢的类型之一

代码语言:javascript
复制
const SchoolBookType = new GraphQLObjectType({
  name: "SchoolBook",
  interfaces: [BooksInterface],
  isTypeOf: obj => obj instanceof SchoolBook,
  fields: () => ({
    title: { type: GraphQLString },
    subject: { type: GraphQLString }
  })
});

下面是我的查询:,但我不知道返回什么,如果我需要将两个集合组合成同一个数组?

代码语言:javascript
复制
books: {
      type: new GraphQLList(BooksInterface),
      resolve() {
        return SchoolBook.find({})  //<---- What to return?
      }
    }

以下是我的疑问:

代码语言:javascript
复制
{
  books{
title
    ... on ColoringBook{
      pages

    }

    ... on SchoolBook{
      subject
    }
  }
}

任何帮助都是很好的,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-14 09:34:30

我想您可以使用异步解析器,并连接这两个查询。

代码语言:javascript
复制
resolve: async () => {
  const schoolBooks = SchoolBook.find({}).exec()
  const coloringBooks = ColoringBook.find({}).exec()

  const [sbooks, cbooks] = await Promise.all([schoolBooks, coloringBooks])
  return [...sbooks, ...cbooks]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54172698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档