как я могу реализовать сокращение в реакции на стороне сервера? - PullRequest
1 голос
/ 27 мая 2020

Я пытаюсь поместить информацию об аутентификации в хранилище redux, чтобы заголовок мог подключиться и получить информацию. Я использую google oauth с паспортом. js.

//this is controller
exports.currentUser = (req, res) => {
  res.send(req.user);
};

//this is the route
const authCtrl = require("../controllers/authCtrl");
const router = require("express").Router();

router.get("/current_user", authCtrl.currentUser);

вот как я настроил маршрутизатор для express

app.use("/auth", require("./routes/authRoutes"));

вот редуктор аутентификации:

import { FETCH_USER } from "../actions/types";

const INITIAL_STATE = { _id: null, googleId: null, displayName: "" };

export default (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case FETCH_USER:
      return action.payload;
    default:
      return state;
  }
};

это действие для получения текущего пользователя:

import axios from "axios";

const axiosInstance = axios.create({
  baseURL: "http://localhost:3001",
  timeout: 3000,
});

import { FETCH_USER, FETCH_BLOGS, FETCH_BLOG } from "./types";

export const fetchUser = () => async (dispatch, getState, api) => {
  try {
    const res = await api.get("/auth/current_user");

    dispatch({ type: FETCH_USER, payload: res.data });
  } catch (e) {
    console.log(e.message);
  }
};

это хранилище на стороне клиента:

import thunk from "redux-thunk";
import axios from "axios";

const axiosInstance = axios.create({
  baseURL: "http://localhost:3001",
});

//we are passing axiosInstance to all action creators
const store = createStore(
  reducers,
  window.INITIAL_STATE,
  applyMiddleware(thunk.withExtraArgument(axiosInstance))
);

пока все хорошо. но проблема заключается в создании хранилища на стороне сервера: я сделал это, но не работал:

import { createStore, applyMiddleware } from "redux";
import thunk from "redux-thunk";
import reducers from "../client/reducers";

export default (req) => {
  const store = createStore(
    reducers,
    {},
    applyMiddleware(thunk)
  );
  console.log("store from servre", store);
  return store;
};

в этом случае редуктор не возвращает состояние. Я не мог разобраться в проблеме весь день. надеюсь, soneone ответит

...