Привет всем, у меня проблема с сеансом 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)
}
},
}