Net*_*bby 5 graphql graphql-js
请原谅我措辞严厉的问题,但这里有一些代码来解释我正在尝试做什么(slug并且value在此查询之外提供):
const query = `{
post(slug: "${slug}") {
content
createdAt
id <--- I want this id for my reply query
slug
}
reply(replyTo: "id") { <--- The second query in question
content
createdAt
id
slug
}
user(id: "${value}") {
username
}
}`;
Run Code Online (Sandbox Code Playgroud)
我刚刚开始使用GraphQL,我喜欢这样一个事实,即我可以一次查询多个数据库.如果我还可以执行一些"查询",那会很棒,但我不确定这是否可行.
考虑GraphQL时,请务必记住GraphQL 同时解析给定类型的每个字段。
例如,当post查询返回Post类型时,GraphQL将同时解析content和createdAt字段。解析完这些字段后,它会转到查询的下一个“级别”(例如,如果content返回的是类型而不是标量,则它将尝试解析这些字段。
您每个单独的查询(post,reply和user)实际上都是Root Query类型的字段,并且相同的逻辑也适用于它们。这意味着有没有办法通过引用返回的ID post中reply-无论是查询将在同一时间被解雇了。
上述例外情况是以突变形式存在的,实际上是顺序解决而不是同时解决。这意味着,即使您仍然无法在查询post中将变量结果用作变量reply,但如果两者都是突变,则可以使用上下文将ID从一个传递到另一个。但是,这非常骇人听闻,需要客户端按特定顺序请求突变。
一个更可行的解决方案是,通过将其分解为两个请求,然后等待触发第二个请求直到第一个请求返回,来在客户端简单地进行处理。
最后,您可以考虑重新设计架构,以防止首先要进行多个查询。例如,您的“帖子”类型可以仅包含一个replies字段,该字段将解析为与返回的帖子的ID对应的所有答复。
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |