Не могу использовать express сеанс в моих мутациях - PullRequest
0 голосов
/ 28 апреля 2020

Привет всем, у меня проблема с сеансом express. Я создал сеанс с express -сессией и использовал его в моем apollo-server- express, но внутри своей мутации входа в систему, когда я хочу использовать сеанс для хранения своего идентификатора пользователя и снова использовать этот сеанс в своем запросе, он изменится на неопределенное. в чем проблема?

Это мой индекс. js где я создал свою сессию, используя mon go -connect:

const MongoStore = mongoconnect(session);    
const SERVER = new ApolloServer({
    typeDefs,
    resolvers,
    cors: {
        origin: '*',
        credentials: true
    },
    playground: {
        endpoint: `http://localhost:3600/graphql`,
        settings: {
            'editor.theme': 'dark'
        }
    },
    context: ({ req }) => {
        return {
            req,
            session: req.session
        }
    }
});

app.use(
    session({
        store: new MongoStore({
            mongooseConnection: mongoose.connection
        }),
        secret: "mysecret-ssss",
        resave: false,
        saveUninitialized: false,
        cookie: {
            maxAge: 1000 * 60 * 60 * 2,
            sameSite: true,
            secure: true
        }
    })
);

Это мой запрос:

Query: {
   circularLetters: async (parent, args, context, info) => {
            const options = {
                page: args.page,
                limit: args.limit
            };
            const circularLetter = await CircularLetters.paginate({}, options, (err, result) => {
                return result.docs;
            });
            console.log(context.session.userId)

            return circularLetter;
        },
}

И моя мутация, в которой я хочу сохранить свой идентификатор пользователя в сессии:

Mutation: {
     login: async (parent, args, context, info) => {
            const user = await Users.findOne({
                personelNumber: args.data.personelNumber
            }, function (err, myUser) {
                console.log(err);
            });

            if (!user) {
                throw new Error("User not found");
            }

            const isMatch = await bcrypt.compare(args.data.password, user.password);

            if (!isMatch) {
                throw new Error("Wrong password");
            }

            context.session.userId = user.id;
            console.log(context.session);

            return {
                user,
                token: generateToken(user.id)
            }
        },
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...