将GraphQL与React和Drupal一起使用非常有趣,但是很少有文档可以使它们全部协同工作。这个按标签提取文章的nodeQuery效果很好,但是我还没有看到任何定义如何将变量传递给使用gqlClient定义的nodeQuery的示例。我在此查询中放置了变量占位符,但出现错误:
Unhandled Rejection (Error): GraphQL error: Variable "$limit" is not defined.
GraphQL error: Variable "$offset" is not defined.
有人有成功的方法吗?
import gqlClient from "../gqlClient";
import { gql } from "apollo-boost";
export const articleListByTerm = gqlClient.query({
query: gql`
{
nodeQuery(
limit: $limit
offset: $offset
filter: {
conditions: [
{ operator: EQUAL, field: "type", value: ["article"] }
{ operator: EQUAL, field: "status", value: ["1"] }
{ operator: EQUAL, field: "field_tags.entity.vid", value: ["tags"] }
{
operator: EQUAL
field: "field_tags.entity.name"
value: ["thiphif"]
}
]
}
) {
entities {
entityLabel
entityBundle
... on NodeArticle {
body {
value
}
fieldImage {
url
}
queryFieldTags {
entities {
entityId
entityLabel
}
}
}
}
}
}
`,
});
以下是查询的调用方式。您可以看到我正在尝试传递变量,希望它们会起作用但没有运气。
articleListByTerm({
variables: { offset: 0, limit: 10 },
}).then(({ data }) =>
dispatch(receivePostsByTerm(data.nodeQuery.entities))
);
好吧-我找到了答案:
import gqlClient from "../gqlClient";
import { gql } from "apollo-boost";
let limit = 10;
let offset = 0;
let type = "article";
export const articleListByTerm = gqlClient.query({
variables: { limit: limit, offset: offset, type: type },
query: gql`
query($limit: Int!, $offset: Int!, $type: String!) {
nodeQuery(
limit: $limit
offset: $offset
filter: { .... etc ...
我希望这对某人有帮助。绝对可以帮助我。我添加了一个字符串!该变量对示例也有帮助。 IDK(如果可以执行数组)。这是一个非常简单的解决方案,只是没有在任何地方进行记录。我点点滴滴地猜测,最后弄清楚了。