首页 > 解决方案 > Apollo/GraphQL/React,如何循环查询数据?

问题描述

在我的一个 React 组件中,我有一个数组,其中包含许多作为字符串的 ID。我想查询数组中的每个 ID 并在我的 MongoDB 数据库中返回其关联对象的数组。但是,这只是有条件地发生,所以我想使用 useLazyQuery 而不是 useQuery。

我试图通过映射来完成它,但似乎我在使用 useLazyQuery 时遇到了问题。这是问题:

const [queryId, {loading, data}] = useLazyQuery[QUERY_ID];

if (queryForIds) {
    // Using just the first ID
   (queryId({variables: {id: idList[0]}}));
   console.log(data);
}

这会导致没有打印任何内容的无限循环(也许我的解析器什么都不返回,但无论我得到一个使我的网站崩溃的无限循环)。我很可能滥用 useLazyQuery 但我不确定如何。

最初我的想法是这样做:

const [queryId, {loading, data}] = useLazyQuery[QUERY_ID];

if (queryForIds) {
    // Using just the first ID
   idList.map((id) => (queryId({variables: {id: idList[0]}}))).data);
}

但我也不确定这是否也有效。我该如何解决这两个问题?

标签: javascriptreactjsmongodbgraphqlapollo

解决方案


推荐阅读