apollo graphql 请求必须包括:"query" 或 "queryId"
apollo graphql request must include: "query" or "queryId"
我正在尝试使用 apollo graphql 和 drupal 构建一个 nextjs 网站。
我可以获取页面,但是当我尝试使用搜索组件查询我构建的页面时,我的请求失败了。
我的查询如下所示:
const [loadSearch, {loading, error, fetchMore}] = useLazyQuery(SEARCH, {
notifyOnNetworkStatusChange: true,
onCompleted: (data) => {
console.log(data);
},
onError: (err) => {
console.log(err);
}
});
useEffect(() => {
loadSearch({
variables: {
query: "test"
},
});
}, [search]);
我的查询如下:
export const SEARCH = gql`
query search($query: String!) {
search(query: $query, access: "Search") {
... on SearchDocuments {
total
type
documents {
id
parent {
id
labelOnly
path
title
type
}
path
status
summary
title
type
}
}
}
}
`;
我在控制台中得到的错误是:
Error: GraphQL Request must include at least one of those two parameters: "query" or "queryId"
我可以确认查询在 drupal 中有效:
非常感谢任何帮助
编辑:
这个错误仍然发生,即使我已经修改为只使用查询:
const {loading, error, fetchMore} = useQuery(SEARCH, {
variables: {
query: "test"
},
notifyOnNetworkStatusChange: true,
onCompleted: (data) => {
console.log(data);
console.log('set real data')
},
onError: (err) => {
console.log(err);
console.log('set dummy data');
}
});
在传递 $query 参数时调用 graphQL api 时,您需要在搜索中传递任何关键字
原文:
useLazyQuery(SEARCH, ...
像下面这样使用:
useLazyQuery(SEARCH, {query: "test"} ...
折腾了半天终于弄明白了,这么小的一个地方,却很容易出错。
问题是我在 .env.local 文件中使用我的 ip,正斜杠如下所示:
GRAPHQL_BASE_URL='http://192.xxx.xxx.x/'
NEXT_PUBLIC_GRAPHQL_CLIENT_BASE_URL='http://192.xxx.xxx.x/'
WATCHPACK_POLLING=true
这个正斜杠对页面路由没有影响,因为一切正常,但这是我的 useLazyQuery 的一个问题,它依赖于 url 参数进行搜索。
删除斜杠解决了这个问题:
GRAPHQL_BASE_URL='http://192.xxx.xxx.x'
NEXT_PUBLIC_GRAPHQL_CLIENT_BASE_URL='http://192.xxx.xxx.x'
WATCHPACK_POLLING=true
我正在尝试使用 apollo graphql 和 drupal 构建一个 nextjs 网站。
我可以获取页面,但是当我尝试使用搜索组件查询我构建的页面时,我的请求失败了。
我的查询如下所示:
const [loadSearch, {loading, error, fetchMore}] = useLazyQuery(SEARCH, {
notifyOnNetworkStatusChange: true,
onCompleted: (data) => {
console.log(data);
},
onError: (err) => {
console.log(err);
}
});
useEffect(() => {
loadSearch({
variables: {
query: "test"
},
});
}, [search]);
我的查询如下:
export const SEARCH = gql`
query search($query: String!) {
search(query: $query, access: "Search") {
... on SearchDocuments {
total
type
documents {
id
parent {
id
labelOnly
path
title
type
}
path
status
summary
title
type
}
}
}
}
`;
我在控制台中得到的错误是:
Error: GraphQL Request must include at least one of those two parameters: "query" or "queryId"
我可以确认查询在 drupal 中有效:
非常感谢任何帮助
编辑: 这个错误仍然发生,即使我已经修改为只使用查询:
const {loading, error, fetchMore} = useQuery(SEARCH, {
variables: {
query: "test"
},
notifyOnNetworkStatusChange: true,
onCompleted: (data) => {
console.log(data);
console.log('set real data')
},
onError: (err) => {
console.log(err);
console.log('set dummy data');
}
});
在传递 $query 参数时调用 graphQL api 时,您需要在搜索中传递任何关键字
原文:
useLazyQuery(SEARCH, ...
像下面这样使用:
useLazyQuery(SEARCH, {query: "test"} ...
折腾了半天终于弄明白了,这么小的一个地方,却很容易出错。
问题是我在 .env.local 文件中使用我的 ip,正斜杠如下所示:
GRAPHQL_BASE_URL='http://192.xxx.xxx.x/'
NEXT_PUBLIC_GRAPHQL_CLIENT_BASE_URL='http://192.xxx.xxx.x/'
WATCHPACK_POLLING=true
这个正斜杠对页面路由没有影响,因为一切正常,但这是我的 useLazyQuery 的一个问题,它依赖于 url 参数进行搜索。
删除斜杠解决了这个问题:
GRAPHQL_BASE_URL='http://192.xxx.xxx.x'
NEXT_PUBLIC_GRAPHQL_CLIENT_BASE_URL='http://192.xxx.xxx.x'
WATCHPACK_POLLING=true