当前位置: 首页 > 知识库问答 >
问题:

Apollo查询变量传递状态时出错

柯乐童
2023-03-14

错误:网络错误:响应不成功:已接收状态代码400

更新:以下是错误详细信息:

[GraphQL错误]:消息:类型为“String!”的变量“$OrderBy”用于应为“ItemorderByInput”类型的位置。位置:[object object],[object object],路径:未定义

尝试让ALL_ITEMS_QUERY接受orderBy变量。我是不是漏掉了什么?

import React, { Component } from "react";
import { Query } from "react-apollo";
import gql from "graphql-tag";
import styled from "styled-components";
import Item from "./Item";
import Pagination from "./Pagination";
import { perPage } from "../config";
import Sort from "./Sort";

const ALL_ITEMS_QUERY = gql`
  query ALL_ITEMS_QUERY($skip: Int = 0, $first: Int = ${perPage}, $orderBy: String!) {
    items(first: $first, skip: $skip, orderBy: $orderBy) {
      id
      title
      price
      description
      image
      largeImage
    }
  }
`;

const Center = styled.div`
  text-align: center;
`;

const ItemsList = styled.div`
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-gap: 60px;
  max-width: ${props => props.theme.maxWidth};
  margin: 0 auto;
  padding-bottom: 80px;
`;

class Items extends Component {
  state = {
    sortNew: "createdAt_ASC"
  };

  render() {
    return (
      <Center>
        <Pagination page={this.props.page} />
        <Sort />

        <Query
          query={ALL_ITEMS_QUERY}
          variables={{
            orderBy: this.state.sortNew,
            skip: this.props.page * perPage - perPage
          }}
        >
          {({ data, error, loading }) => {
            if (loading) return <p>Loading...</p>;
            if (error) return <p>Error: {error.message}</p>;
            return (
              <ItemsList>
                {data.items.map(item => (
                  <Item item={item} key={item.id} />
                ))}
              </ItemsList>
            );
          }}
        </Query>
        <Pagination page={this.props.page} />
      </Center>
    );
  }
}

export default Items;

共有1个答案

姜德容
2023-03-14

ALL_ITEMS_QUERY希望orderBy是类似orderBy:createdat_asc的枚举,但您传递的是字符串orderBy:string!。要解决这个问题,请将枚举名传递给all_items_query,这样就可以动态更改orderBy。

示例如下所示

const ALL_ITEMS_QUERY = gql`
  query ALL_ITEMS_QUERY($skip: Int = 0, $first: Int = ${perPage}, $orderBy: NameOfItemsEnum) {
    items(first: $first, skip: $skip, orderBy: $orderBy) {
      id
      title
      price
      description
      image
      largeImage
    }
  }
`;

其中nameofitemsenum是在后端为枚举类型指定的名称

 类似资料:
  • 我正在做一个项目,并试图在我的SpringBoot应用程序中使用GraphQL后端服务器。我已经编写了一个连接到GraphQL后端并创建/获取数据的客户端,但是当我试图从应用程序传递变量并通过查询时,它会抛出一个错误。但是如果我只是注释变量部分并直接在查询中硬编码值,它就可以正常工作。 突变查询-突变($name: String!){createList(name:$name){更新listId

  • 问题内容: 如何动态传递变量参数 TypeError:必须为str,而不是int 尽管我转换为字符串有任何想法,但遇到了以上错误? 有没有其他的方式来传递参数? 问题答案: 通过通过关键字arguments提供参数来使用参数化sql 。数据库适配器将为您完成参数的正确引用,并且代码将较不容易受到SQL注入攻击。(有关不正确引用的非参数化sql可能引起您的麻烦的类型,请参阅Little Bobby

  • 我正在使用Apollo服务器,试图为一个电子商务应用程序构造一个嵌套查询。我正在查询一个rest api以检索购物篮中的物品。 然而,此请求的响应并不包含我们需要的所有产品信息。因此,我尝试嵌套一个附加查询,使用返回的参数之一作为变量,以获得所需的附加产品信息。 我已经看到了嵌套查询示例,据我所知(我对GraphQL和Apollo尤其陌生),这是GraphQL的一大优点。但是我还没有看到任何嵌套查

  • 问题内容: 如何在sql查询中传递java字符串变量。我已经完成了所有JDBC连接。 我的SQL数据库查询是 它不起作用。但是,如果我执行以下代码,其工作原理 现在告诉我如何将变量名传递给sql查询以执行此操作。Jst告诉我如何将变量locationnames传递给comp.name。 我完整的Java函数如下所示:locationCombo表示在组合框中选择的项目。CropCombo也表示相同的

  • 我得到的输出是“yx”,我不明白为什么,x.getclass()返回“class y”,那么它的调用不应该是参数为y的方法吗?

  • 我有一个apollo包装的组件,它应该为我的组件提供来自github graphql v4 api的响应数据。我打算使用应用程序另一部分的字符串(SEARCH\u QUERY)来用于我的gql查询,但github不断返回未定义的字符串。我在关注阿波罗官方文件http://dev.apollodata.com/react/queries.html#graphql-选项。我看不出我做错了什么。 这个没