React w/ Apollo & Drupal nodeQuery - 如何定义/传递变量?

Posted

技术标签:

【中文标题】React w/ Apollo & Drupal nodeQuery - 如何定义/传递变量?【英文标题】:React w/ Apollo & Drupal nodeQuery - how to define/pass variables? 【发布时间】:2020-09-25 01:18:35 【问题描述】:

将 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))
    );

【问题讨论】:

阅读有关 graphql 传递变量的信息 - 查询语法很重要 【参考方案1】:

好吧 - 我找到了答案:

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,如果你可以做一个数组。这是一个相当简单的解决方案,只是它没有记录在任何一个地方。我点点滴滴猜测,终于弄明白了。

【讨论】:

以上是关于React w/ Apollo & Drupal nodeQuery - 如何定义/传递变量?的主要内容,如果未能解决你的问题,请参考以下文章

Apollo 链接状态与内置 React 状态

使用 React Native 处理 Apollo 错误

找不到模块:无法解析“apollo-link-context”-REACT,APOLLO-SERVER

React Apollo - 取消订阅查询

如何在 react-apollo-hooks 和 formik 中使用突变?

设置 AWSAppSyncClient、Apollo 和 React 的正确方法