有没有办法避免 GraqhQL 中的循环类型依赖关系?



考虑参考实现的主要SWAPI示例:https://github.com/graphql/swapi-graphql

电影.js
import PersonType from './person';

人.jsimport FilmType from './film';

到处都是。这些循环部门是否是可以接受的做法?有什么好的模式可以避免这种情况吗?在 GraphQL 的最终演示中包含有问题的做法似乎很糟糕。

如果是 GraphQL,这不是一个坏做法,他们甚至为这种情况准备了一个解决方案。如果定义某种类型的fields属性,则可以将其声明为函数

const User = new GraphQLObjectType({
name: 'User',
fields: () => ({
id: { type: GraphQLID }
// other attributes
})
});

graphql-js使用名为resolveThunk的方法来处理fields属性,其实现如下

function resolveThunk<T>(thunk: Thunk<T>): T {
return typeof thunk === 'function' ? thunk() : thunk;
}

如您所见,它会检查thunk(在本例中为字段)是否为函数。如果是,则返回其结果,否则返回 thunk 本身。

最新更新