Как исправить ошибку «Ошибка: ошибка GraphQL: невозможно прочитать свойство« id »из неопределенного»? - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь полностью подключиться реагировать с сервером GraphQL.У меня не было проблем с получением запросов от mongodb, но у меня были проблемы с мутацией.На самом деле я вижу некоторые изменения

в моей консоли

, но он возвращает ошибку из вопроса в заголовке.Кроме того, , отображаемый на вкладке в консоли, отличается от вкладки "учебного проекта ninja graphql", на которой я учился, поэтому я довольно озадачен, если сначала правильно установил код.

Моя настройка:

query.js

export const addUserMutation = gql`
  mutation createUser($input: UserInput) {
    createUser(input: $input) {
      firstName
      lastName
      email
      items {
        text
        timeISO
        title
      }
    }
  }
`;

app.js

const client = new ApolloClient({
  uri: "http://localhost:5000/graphql"
});

function App() {
  return (
    <Router>
      <ApolloProvider client={client}>
        <Route exact path="/" component={Homepage} />
        <Route exact path="/users" component={UsersList} />
        <Route exact path="/adduser" component={AddUser} />
      </ApolloProvider>
    </Router>
  );
}

addUser.js

import { graphql } from "react-apollo";
import * as compose from "lodash.flowright";

import { addUserMutation } from "../queries/queries";

const AddUser = props => {
  let [firstName, setFirstName] = useState("");
  let [lastName, setLastName] = useState("");
  let [email, setEmail] = useState("");
  let [gender, setGender] = useState("MALE");
  let [items, setItems] = useState("");
  const onChange = e => {
    if (e.target.name === "firstName") {
      setFirstName(e.target.value);
    }
    if (e.target.name === "lastName") {
      setLastName(e.target.value);
    }
    if (e.target.name === "email") {
      setEmail(e.target.value);
    }
    if (e.target.name === "items") {
      setItems(e.target.value);
    }
    if (e.target.name === "gender") {
      setGender(e.target.value);
    }
  };
  const onSubmit = e => {
    e.preventDefault();
    console.log(props);
    props.addUserMutation({
      variables: {
        firstName,
        lastName,
        email,
        gender,
        items
      }
    });
    return (....)
  };
export default compose(graphql(addUserMutation, { name: "addUserMutation" }))(
  AddUser
);

1 Ответ

0 голосов
/ 19 сентября 2019

Пожалуйста, установите параметр ответа в мутации createUser. См. Пример ниже: мутация createUser ($ input: UserInput) {createUser (input: $ input) {firstName lastName элементы электронной почты {текст timeISO title}} Ответ}

тип ответа {_id: имя строки: строка}

** ключевое слово типа используется для данных ответа возврата

...