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

获取getUserLocation不是一个函数

席银龙
2023-03-14

制作一个使用搜索栏从搜索结果中获取特定位置的所有用户的项目。为我的项目使用graphql和react。获取错误,表示getUserlocation不是与POST一起使用的函数http://localhost:3000/graphql400(错误请求)

我肯定我写错了函数,但找不到它的示例。

搜索enu.js

import { useQuery } from "@apollo/client";
import { QUERY_GET_LOCATIONS } from "../util/queries";

export function useUserLocation() {
  const getUserLocation = useQuery(QUERY_GET_LOCATIONS);
  const getLocation = async (location) => {
    try {
      if (!location) {
        throw new Error("No users with that location");
      }
      return await getUserLocation({ variables: { location } });
    } catch (error) {
      console.log(error);
    }
  };
  return getLocation;
}

<代码>查询。js

import { gql } from "@apollo/client";


export const QUERY_GET_LOCATIONS = gql`
  query getUserLocation {
    getUserLocation {
      _id
      username
    }
  }
`;


搜索enu.js

import React, { useState } from "react";
import {
  Jumbotron,
  Container,
  Col,
  Form,
  Button,
  Card,
  CardColumns,
} from "react-bootstrap";

// import Auth from "../utils/auth";
import { QUERY_GET_LOCATIONS } from "../util/queries";
import { useQuery } from "@apollo/client";

const SearchedUsers = () => {
  // create state for holding returned google api data
  const [searchedUsers, setSearchedUsers] = useState([]);
  // create state for holding our search field data
  const [searchInput, setSearchInput] = useState("");
  const { getLocation } = useQuery(QUERY_GET_LOCATIONS);

  // create method to search for books and set state on form submit
  const handleFormSubmit = async (event) => {
    event.preventDefault();

    if (!searchInput) {
      return false;
    }

    try {
      const response = await getLocation(searchInput);

      if (!response.ok) {
        throw new Error("something went wrong!");
      }

      const { items } = await response.json();

      const userData = items.map((user) => ({
        userId: user.id,
        userName: user.userName || ["No user to display"],
      }));

      setSearchedUsers(userData);
      setSearchInput("");
    } catch (err) {
      console.error(err);
    }
  };

  return (
    <>
      <Jumbotron fluid className="text-light bg-dark">
        <Container>
          <h1>Search for Location!</h1>
          <Form onSubmit={handleFormSubmit}>
            <Form.Row>
              <Col xs={12} md={8}>
                <Form.Control
                  name="searchInput"
                  value={searchInput}
                  onChange={(e) => setSearchInput(e.target.value)}
                  type="text"
                  size="lg"
                  placeholder="Search for a location"
                />
              </Col>
              <Col xs={12} md={4}>
                <Button type="submit" variant="success" size="lg">
                  Submit Search
                </Button>
              </Col>
            </Form.Row>
          </Form>
        </Container>
      </Jumbotron>

      <Container>
        <h2>
          {searchedUsers.length
            ? `Viewing ${searchedUsers.length} results:`
            : "Search for a location to begin"}
        </h2>
        <CardColumns>
          {searchedUsers.map((user) => {
            return (
              <Card key={user.userId} border="dark">
                <Card.Body>
                  <Card.Title>{user.userName}</Card.Title>
                  <p className="small">Bio: {user.bio}</p>
                </Card.Body>
              </Card>
            );
          })}
        </CardColumns>
      </Container>
    </>
  );
};

export default SearchedUsers;

共有1个答案

傅俊德
2023-03-14

嗯,useQuery返回三件事加载,错误

 const {loading, error, data} = useQuery(QUERY_GET_LOCATIONS);

现在您可以使用控制台了。记录(数据)并检查您得到的响应。

 类似资料:
  • TypeError:Res.Status不是auth的函数(D:\Project\Web Application\Learning React\Mern Stack\Middleware\auth.js:17:9)。我得到了这个错误。代码如下所示。 错误截图

  • 问题内容: 我试图编写登录到网站的节点功能,但无法使其正常工作。我试图等待页面使用加载功能 这是我到目前为止的内容: 当我运行该函数时,我收到错误消息。这是怎么回事,我想念什么? 问题答案: 为了与其他硒语言绑定的一致性, 并已被弃用。 如果您使用,则应尝试使用代替来确定元素是否存在,如下所示: 或者,如果您要等到欲望元素出现,则应尝试使用以下方法:

  • 我试图使用rxjs输入自动完成的目的,但我一直得到这些错误TypeError:terms.debounce时间不是一个函数,即使我设置这些导入'rxjs/操作员/DebounceTime'; 我称之为的函数是:

  • 在Angular2中尝试一个代码,它的HTML正在运行,但Angular代码没有执行,它表示我从HTML传递的值不是函数。请帮忙! HTML:app.html - 我正在尝试显示学生的详细信息。我在angular app.component.ts文件中有一个项目列表,我在HTML页面上调用它,工作正常。但是当我将单击事件的值传递给 app.component.ts 时,它会给出错误并在控制台上显示

  • 问题内容: 我试图要求一个文件,然后将其传递给var。我正在按照本教程创建身份验证系统。编写server.js文件并尝试编译后,出现bson错误,因此我更改了需要它的发行版本的猫鼬代码。 这是我的代码和错误: server.js 错误 我已经读到这通常意味着requireJS无法正确加载,但我不知道为什么或如何修复它。 根据评论进行编辑: 根据要求,这是 问题答案: 我认为这意味着在您的模块中未将

  • 在我的项目中,我创建了一个负责登录的组件。它返回一个表单并包含一个名为的验证方法。当前该方法如下所示: 我想让整个事情看起来更好,并用两个三元运算符和一个if语句切换了3个if语句: 但是,只要我尝试此操作,就会出现以下错误: TypeError:e.preventDefault(…)不是函数 我不知道在这里使用三元是如何影响事件对象的。特别是因为我在寄存器组件中以类似的方式完成了它,并且没有发生