GraphQl 将查询参数传递给子类型
Posted
技术标签:
【中文标题】GraphQl 将查询参数传递给子类型【英文标题】:GraphQl pass query arguments down to sub type 【发布时间】:2018-02-16 22:41:34 【问题描述】:我有一个名为 ProfileQuery 的查询:
const ProfileQuery =
description: 'Profile',
type: UserType,
args:
argOne:
type: GraphQLString,
,
,
resolve: (
root
) => getProfile(),
我有一个名为:UserType 的类型,我希望能够访问它的子类型中的参数。
UserType -> SettingsType.requiresVerification
我在 UserType 中有以下字段:
settings:
type: SettingsType, // I want to access the args from the Profile query in here?!
resolve: async (
requestedUser,
args,
rootValue: request: user
) => getAllSettings(user.id),
,
但是,当我在 SettingsType 中记录参数时,它们是空的。
如何将参数从 ProfileQuery 传递到 SettingsType?
【问题讨论】:
【参考方案1】:我为此搜索了很长时间,但找不到解决此问题的默认方法。我现在的解决方案是将 args 附加到父级。
这是一个示例,您将在其中检索用户和消息列表,并对您的消息列表应用、偏移和限制:
Query:
user: async (parent, id, offset, limit , models ) =>
const user = await models.User.findByPk(id);
user.offset = offset; // Attach arg here
user.limit = limit; // Attach arg here
return user;
,
,
User:
messages: async (user, args, models ) =>
return await models.Message.findAll(
offset: user.offset, // Retrieve arg here
limit: user.limit, // Retrieve arg here
where:
userId: user.id,
,
);
,
语法与您的不完全一样,但您明白了。并且应该对这些属性是否存在进行额外检查。有点惊讶,没有一种简单的方法可以做到这一点(或者,至少,一种视觉上更简单的方法)!
希望这对其他窥视者有所帮助!
【讨论】:
以上是关于GraphQl 将查询参数传递给子类型的主要内容,如果未能解决你的问题,请参考以下文章