包含列表成员的GraphQL Nexus Union



我正在研究什么可能是一个简单的问题,但我不确定如何实际实现它。使用GraphQL nexus,我试图创建一个查询,返回"书签"数组;或者一些错误。到目前为止,我已经设置了以下内容:

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带有字段in in来解析数组,像这样:

const BookmarkSuccess = objectType({
name: 'BookmarkSuccess',
definition(t) {
t.nonNull.list.field('bookmarks', {
type: 'Bookmark',
resolve() {} // Where my issue is
})
}
})

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

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

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

最新更新