Как передать cookie с apollo-сервера на apollo-clenet

149
27 ноября 2021, 22:40

Mutation

Mutation: {
  signUp: (_, { res }) => {
    try {
      res.cookie("jwt", "token", {
        httpOnly: true
      });
      return "Amasia";
    } catch (error) {
      return "error";
    }
  };
}

Apollo-clenet-react

const [addTodo, { loading, error, data }] = useMutation(gql);
  const [formSignUp, setFormSignUp] = useState({
    lastName: '',
    firstName: '',
    password: '',
    email: '',
  });
  const change = e => {
    const { value, name } = e.target;
    setFormSignUp({ ...formSignUp, [name]: value });
  };

Когда я делаю запрос от реагировать. Вот ответ, который я получаю с сервера.

1)Data {"data": {"signUp": "Amasia"}}

2) Network

Application

Хорошо, когда я смотрю в Application Cookies, он пуст.

Что я делаю не так? Почему cookies пустые?

Answer 1

проблема в настройках apollo-клиента и apollo-сервера (apollo-cookie).

Я настроил так.

apollo-client

import { render } from 'react-dom';
import React, { Suspense } from 'react';
import { ApolloClient } from 'apollo-client'
import { ApolloProvider } from 'react-apollo';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { createHttpLink } from 'apollo-link-http';
import './i18n';
import Loading from './component/loading';
import RouteProj from './router';
const link = createHttpLink({
  uri: 'http://localhost:8000/graphql',
  credentials: 'include'
});
const client = new ApolloClient({
  cache: new InMemoryCache(),
  link,
});

render(
  <ApolloProvider client={client}>
    <Suspense fallback={<Loading />}>
      <RouteProj/>
    </Suspense>
  </ApolloProvider>,
  document.getElementById('root'),
);

apollo-server

import cors from "cors";
import express from "express";
import { ApolloServer } from "apollo-server-express";
import mongoose from "mongoose";
import schema from "./schema";
import resolvers from "./resolvers";
import models from "./models";
  const app = express();
  var corsOptions = {
    origin: "http://localhost:3000",
    credentials: true
  };
  app.use(cors(corsOptions));
  const server = new ApolloServer({
    typeDefs: schema,
    resolvers,
    context: ({ res }) => ({
      res
    })
  });
  server.applyMiddleware({ app, path: "/graphql", cors: false });
  app.listen({ port: 8000 });
READ ALSO
Проверка на число в функции

Проверка на число в функции

Нужно сделать так чтобы когда вводят не число, в функцию prime, появилось сообщение, что нужно ввести только число

149
Записать массив числовых значений в таблицу состоящую из инпутов

Записать массив числовых значений в таблицу состоящую из инпутов

Помогите решить такую задачуИмеется массив, состоящий из 9 числовых значений например: var readyArray = [1, 0, 4, 2, 0, 1, 6, 2, 0]; Нужно записать данный массив...

210
Почему криво работает Slick Slider?

Почему криво работает Slick Slider?

Всем добрейшего дня! Подскажите, гуру, есть слайдер на Slick Slider'еЕсть некоторые огрехи в работе данного слайдера с превью фотографий

105
Как проходит сравнение объектов в mapStateToProps?

Как проходит сравнение объектов в mapStateToProps?

Подскажите пожалуйста, как проходит сравнение объектов в mapStateToProps для определения того, нужно ли перерендерить компонентИнтересует вот...

109