首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有列表成员的GraphQL Nexus

具有列表成员的GraphQL Nexus
EN

Stack Overflow用户
提问于 2022-06-17 20:03:29
回答 1查看 152关注 0票数 0

我正在研究的大概是一个简单的问题,但我不知道如何实际实现它。使用GraphQL nexus,我试图创建一个返回“书签”数组或一些错误的查询。到目前为止,我有以下设置:

代码语言:javascript
运行
复制
    const Bookmark = objectType({
      name: 'Bookmark',
      definition(t) {
        t.nonNull.id('id')
        t.nonNull.string('title')
        t.nonNull.string('url')
        t.typeName
      }
    })

    const BookmarkResult = unionType({
      name: 'BookmarkResult',
      definition(t) {
        t.members('Bookmark', 'NotAllowedError', 'NotFoundError', 'UnknownError')
      }
    })

    const BookmarkQuery = queryField('links', {
      type: 'BookmarkResult',
      resolve: async () => await pipe(getAllBookmarks(), foldW(of, of))()
    })

此函数将返回一个书签数组,或错误类型之一。但是它们的类型显然不匹配,因为我应该返回不允许的[Bookmark]! | NotAllowedError | NotFoundError | UnknownError。因此,我认为我需要创建另一个objectType,其中包含一个字段,用于解析数组,如下所示:

代码语言:javascript
运行
复制
    const BookmarkSuccess = objectType({
      name: 'BookmarkSuccess',
      definition(t) {
        t.nonNull.list.field('bookmarks', {
          type: 'Bookmark',
          resolve() {} // Where my issue is
        })
      }
    })

如果我的查询正在解析联合,是否也必须解析BookmarkSuccess对象才能将其添加进来?

EN

回答 1

Stack Overflow用户

发布于 2022-06-17 23:47:41

弄明白了。如果其他人遇到这个问题,我用下面的代码解决了这个问题。

代码语言:javascript
运行
复制
const Bookmark = objectType({}) // same as above
const BookmarkList = objectType({
  name: 'BookmarkList',
  definition(t) {
    t.field('bookmarks', {
      type: nonNull(list('Bookmark'))
    })
  }
})
const BookmarkResult = unionType({
  type: 'BookmarkResult',
  definition(t) {
    t.members('BookmarkList', 'NotAllowedError', 'NotFoundError', 'UnknownError')
  }
})
const BookmarkQuery = queryField({}) // same as above
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72664279

复制
相关文章

相似问题

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