我正在研究的大概是一个简单的问题,但我不知道如何实际实现它。使用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,其中包含一个字段,用于解析数组,如下所示:
const BookmarkSuccess = objectType({
name: 'BookmarkSuccess',
definition(t) {
t.nonNull.list.field('bookmarks', {
type: 'Bookmark',
resolve() {} // Where my issue is
})
}
})如果我的查询正在解析联合,是否也必须解析BookmarkSuccess对象才能将其添加进来?
发布于 2022-06-17 23:47:41
弄明白了。如果其他人遇到这个问题,我用下面的代码解决了这个问题。
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 abovehttps://stackoverflow.com/questions/72664279
复制相似问题